NullPointerException рдХреЛ рдХреИрд╕реЗ рд╕рдордЭреЗрдВ

рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рд░рд▓ рд▓реЗрдЦ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЕрдХреНрд╕рд░ рдЕрдиреБрднрд╡реА рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ рдЬреЛ рдЕрд╕рд╣рд╛рдп рд░реВрдк рд╕реЗ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдкрд░ рдПрдХ NullPointerException (NPE рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рд╕реЗ) рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдбрд┐рдмрдЧрд░ рдХреЗ рдмрд┐рдирд╛ рдХреЛрдИ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд╣реАрдВ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдирдкреАрдИ рдореЗрдВ рдирд╣реАрдВ рд▓рд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ: рдЕрд╢рдХреНрдд рдПрдиреЛрдЯреЗрд╢рди, рдЗрдирдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдФрд░ рдЕрдиреНрдп рддрд░реАрдХреЗ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдЬрдм рд░реЛрдЧреА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреАрдорд╛рд░ рд╣реИ, рддреЛ рдЙрд╕рдХрд╛ рдЗрд▓рд╛рдЬ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рди рдХрд┐ рдорд╕реНрддрд┐рд╖реНрдХ рдкрд░ рдЯрдкрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╡рд╣ рдмрд┐рдирд╛ рдЯреЛрдкреА рдХреЗ рд╕рд░реНрджрд┐рдпреЛрдВ рдореЗрдВ рдЪрд▓реЗред



рддреЛ, рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди NPE рдХреЗ рд╕рд╛рде рдХреНрд░реИрд╢ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рд╣реИред рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдЙрд╕рдХреЗ рдЧреНрд░рд╛рд╣рдХ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╛ рдЖрдкрдиреЗ рдЦреБрдж рдЙрд╕реЗ рд▓реЙрдЧ рдореЗрдВ рджреЗрдЦрд╛ рдерд╛ред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



NPE рддреАрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

  1. рдЙрд╕реЗ рдереНрд░реЛ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
  2. рдХрд┐рд╕реА рдиреЗ рдлреЗрдВрдХ рдХреЗ рд╕рд╛рде рдЕрд╢рдХреНрдд рдХрд░ рджрд┐рдпрд╛
  3. рдХреЛрдИ рдЕрд╢рдХреНрдд рд▓рд┐рдВрдХ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ


рджреВрд╕рд░реЗ рдФрд░ рддреАрд╕рд░реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЕрдкрд╡рд╛рдж рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдВрджреЗрд╢ рд╣рдореЗрд╢рд╛ рд╢реВрдиреНрдп рд╣реЛрддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рдореЗрдВ рдпрд╣ рдордирдорд╛рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, java.lang.System.setProperty рдПрдХ NPE рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдлреЗрдВрдХрддрд╛ рд╣реИ "рдХреБрдВрдЬреА рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ" рдпрджрд┐ рдЖрдк рдХреБрдВрдЬреА рд╢реВрдиреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рд╣реБрдПред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред



рдирд▓-рд╕рдВрджрд░реНрдн рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

  1. рдПрдХ рдЧреИрд░-рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛
  2. рдПрдХ рдЧреИрд░-рд╕реНрдерд┐рд░ рдХреНрд╖реЗрддреНрд░ рддрдХ рдкрд╣реБрдВрдЪ (рдкрдврд╝рдирд╛ рдпрд╛ рд▓рд┐рдЦрдирд╛)
  3. рдХрд┐рд╕реА рдРрд░реЗ рддрддреНрд╡ рддрдХ рдкрд╣реБрдБрдЪ (рдкрдврд╝рдирд╛ рдпрд╛ рд▓рд┐рдЦрдирд╛)
  4. рдПрдХ рд╕рд░рдгреА рдХреА рд▓рдВрдмрд╛рдИ рдкрдврд╝рдирд╛
  5. рдЕрдирдмреЙрдХреНрд╕рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рд╡реИрд▓реНрдпреВрдСрдл рд╡рд┐рдзрд┐ рдХрд╛ рдЕрд╡реИрдз рдЖрд╣реНрд╡рд╛рди


рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпреЗ рдорд╛рдорд▓реЗ рдареАрдХ рдЙрд╕реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдВ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдХрд╣реАрдВ рдФрд░ рдирд╣реАрдВред



рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

1: class Data { 2: private String val; 3: public Data(String val) {this.val = val;} 4: public String getValue() {return val;} 5: } 6: 7: class Formatter { 8: public static String format(String value) { 9: return value.trim(); 10: } 11: } 12: 13: public class TestNPE { 14: public static String handle(Formatter f, Data d) { 15: return f.format(d.getValue()); 16: } 17: }
      
      





рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрднрд╛рд▓ рд╡рд┐рдзрд┐ рдХрд╣реАрдВ рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЖрдкрдХреЛ рдорд┐рд▓ рдЧрдпрд╛:

 Exception in thread "main" java.lang.NullPointerException at TestNPE.handle(TestNPE.java:15)
      
      





рдЕрдкрд╡рд╛рдж рдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИ - f, d рдпрд╛ d.val рдореЗрдВ? рдпрд╣ рджреЗрдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдЗрд╕ рдкрдВрдХреНрддрд┐ рдореЗрдВ f рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рд╛рд░реВрдк рд╡рд┐рдзрд┐ рд╕реНрдерд┐рд░ рд╣реИред рдмреЗрд╢рдХ, рдХрдХреНрд╖рд╛ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рдзрд┐ рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рдмреБрд░рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ (рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рдмрд╛рдж рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддрд╛ рд╣реИ)ред рдХрд┐рд╕реА рднреА рддрд░рд╣, рдЪ рдХрд╛ рдореВрд▓реНрдп рдЕрдкрд╡рд╛рдж рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ d рдЕрд╢рдХреНрдд рдирд╣реАрдВ рдереЗ, рд▓реЗрдХрд┐рди d.val рд╢реВрдиреНрдп рдерд╛, рддреЛ рдкреНрд░рд╛рд░реВрдк рд╡рд┐рдзрд┐ (рдиреМрд╡реАрдВ рдкрдВрдХреНрддрд┐ рдореЗрдВ) рдХреЗ рдЕрдВрджрд░ рдПрдХ рдЕрдкрд╡рд╛рдж рдкрд╣рд▓реЗ рд╣реА рдЖ рдЪреБрдХрд╛ рд╣реЛрдЧрд╛ред рдЗрд╕реА рддрд░рд╣, рд╕рдорд╕реНрдпрд╛ рдЧреЗрдЯрд╡реИрд▓реНрдпреВ рдкрджреНрдзрддрд┐ рдХреЗ рдЕрдВрджрд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рднрд▓реЗ рд╣реА рдпрд╣ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛред рдПрдХ рдмрд╛рд░ рдЕрдкрд╡рд╛рдж рдкрдВрджреНрд░рд╣рд╡реАрдВ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдХрд╛рд░рдг рд╣реИ: рдбреА рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдЕрд╢рдХреНрддред



рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

  1: class Formatter { 2: public String format(String value) { 3: return "["+value+"]"; 4: } 5: } 6: 7: public class TestNPE { 8: public static String handle(Formatter f, String s) { 9: if(s.isEmpty()) { 10: return "(none)"; 11: } 12: return f.format(s.trim()); 13: } 14: }
      
      





рд╣реИрдВрдбрд▓ рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

 Exception in thread "main" java.lang.NullPointerException at TestNPE.handle(TestNPE.java:12)
      
      





рдЕрдм рдкреНрд░рд╛рд░реВрдк рд╡рд┐рдзрд┐ рдЧреИрд░-рд╕реНрдерд┐рд░ рд╣реИ, рдФрд░ f рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рддреНрд░реБрдЯрд┐ рдХрд╛ рд╕реНрд░реЛрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрд╕ рдХрд┐рд╕реА рднреА рд╕реЙрд╕ рдХреЗ рдиреАрдЪреЗ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рдиреМрд╡реАрдВ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрдкреАрд▓ рдереАред рдпрджрд┐ рд╢реВрдиреНрдп рдереЗ, рддреЛ рдиреМрд╡реАрдВ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реБрдЖ рд╣реЛрдЧрд╛ред рдЕрдкрд╡рд╛рдж рд╕реЗ рдкрд╣рд▓реЗ рдХреЛрдб рдХреЗ рддрд░реНрдХ рдХреЛ рджреЗрдЦрдиреЗ рд╕реЗ рдЕрдХреНрд╕рд░ рдХреБрдЫ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИред



рддрд░реНрдХ рдХреЗ рд╕рд╛рде, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рд╣реЛрдЧрд╛ред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд▓рд╛рдЗрди рдиреМ рдореЗрдВ рдПрдХ рд╢рд░реНрдд рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦреА рдЬрд╛рдПрдЧреА:

 if("".equals(s))
      
      





рдЕрдм рд░реЗрдЦрд╛ рд╕реНрд╡рдпрдВ рдлрд╝реАрд▓реНрдбреНрд╕ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ s рддрдХ рдирд╣реАрдВ рдкрд╣реБрдБрдЪ рдкрд╛рддреА рд╣реИ, рдФрд░ рд╕рдорд╛рди рдкрджреНрдзрддрд┐ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЕрд╢рдХреНрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреА рд╣реИ, рдЭреВрдареА рд▓реМрдЯрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдмрд╛рд░рд╣рд╡реАрдВ рдкрдВрдХреНрддрд┐ рдореЗрдВ рддреНрд░реБрдЯрд┐ f рдФрд░ s рджреЛрдиреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддреА рд╣реИред рдореВрд▓ рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╕рдордп, рдкреНрд░рд▓реЗрдЦрди рдпрд╛ рд╕реНрд░реЛрдд рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдХрд┐ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рддрд░реАрдХреЗ рдФрд░ рдирд┐рд░реНрдорд╛рдг рд╢реВрдиреНрдп рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЙрдиреНрд╕реЗрдкреНрдЯреЗрд╢рди рдСрдкрд░реЗрдЯрд░ +, рдХрднреА рднреА рдПрдирдкреАрдИ рдирд╣реАрдВ рдХрд╣рддрд╛ рд╣реИред



рдпрд╣рд╛рдБ рдХреЛрдб рд╣реИ (рдЬрд╛рд╡рд╛ рд╕рдВрд╕реНрдХрд░рдг рдпрд╣рд╛рдВ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВ Oracle JDK 1.7.0.45 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ):

  1: import java.io.PrintWriter; 2: 3: public class TestNPE { 4: public static void dump(PrintWriter pw, MyObject obj) { 5: pw.print(obj); 6: } 7: }
      
      





рд╣рдо рдбрдВрдк рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдирд┐рдореНрди рдЕрдкрд╡рд╛рдж рдорд┐рд▓рддреЗ рд╣реИрдВ:

 Exception in thread "main" java.lang.NullPointerException at java.io.PrintWriter.write(PrintWriter.java:473) at java.io.PrintWriter.print(PrintWriter.java:617) at TestNPE.dump(TestNPE.java:5)
      
      





Pw рдкреИрд░рд╛рдореАрдЯрд░ рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛, рдЕрдиреНрдпрдерд╛ рд╣рдо рдкреНрд░рд┐рдВрдЯ рд╡рд┐рдзрд┐ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред рд╢рд╛рдпрдж obj рдореЗрдВ рдЕрд╢рдХреНрдд? рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ pw.print (null) рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдкрд╡рд╛рдж рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ "null" рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред рдЪрд▓рд┐рдП рдЕрдВрдд рд╕реЗред рдЕрдкрд╡рд╛рдж рдпрд╣рд╛рдВ рд╣реБрдЖ:

 472: public void write(String s) { 473: write(s, 0, s.length()); 474: }
      
      





рд▓рд╛рдЗрди 473 рдореЗрдВ рдПрдирдкреАрдИ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдХрд╛рд░рдг рд╣реИ: рд▓рд╛рдЗрди рдПрд╕ рдХреА рд▓рдВрдмрд╛рдИ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ред рддреЛ s рдореЗрдВ null рд╣реИред рдпрд╣ рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕реНрдЯреИрдХ рдкрд░ рдЬрд╛рдПрдВ:

 616: public void print(Object obj) { 617: write(String.valueOf(obj)); 618: }
      
      





String.valueOf рдкрджреНрдзрддрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд▓реЗрдЦрди рд╡рд┐рдзрд┐ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд┐рд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдЕрд╢рдХреНрдд рд▓реМрдЯ рд╕рдХрддрд╛ рд╣реИ?

 public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); }
      
      





рдПрдХрдорд╛рддреНрд░ рд╕рдВрднрд╡ рд╡рд┐рдХрд▓реНрдк рд╣реИ obj рдЕрд╢рдХреНрдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди obj.toString () рд╡рд╛рдкрд╕ рдЕрд╢рдХреНрдд рд╣реИред рдЗрд╕рд▓рд┐рдП, рддреНрд░реБрдЯрд┐ рдХреЛ рд╣рдорд╛рд░реЗ MyObject рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдУрд╡рд░рд░рд╛рдЗрдб рд╕реНрдЯреНрд░реАрдВрдЧ () рд╡рд┐рдзрд┐ рдореЗрдВ рдорд╛рдВрдЧрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ MyObject рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдкрд░ рдмрд┐рд▓реНрдХреБрд▓ рднреА рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд░рд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдбрд┐рдмрдЧрд░ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВред



рдХрдкрдЯреА рдСрдЯреЛрдмреЙрдХреНрд╕рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╣реИрдВ:

  1: public class TestNPE { 2: public static int getCount(MyContainer obj) { 3: return obj.getCount(); 4: } 5: }
      
      





рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЕрдкрд╡рд╛рдж:

 Exception in thread "main" java.lang.NullPointerException at TestNPE.getCount(TestNPE.java:3)
      
      





рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдПрдХрдорд╛рддреНрд░ рд╡рд┐рдХрд▓реНрдк obj рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рд╢реВрдиреНрдп рд╣реИред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ MyContainer рд╡рд░реНрдЧ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреА рдЪрд╛рд╣рд┐рдП:

 import java.util.List; public class MyContainer { List<String> elements; public MyContainer(List<String> elements) { this.elements = elements; } public Integer getCount() { return elements == null ? null : elements.size(); } }
      
      





рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ getCount () рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрд╡рддрдГ TestNPE.java рдХреА рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрдХ рдЗрдВрдЯ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрджрд┐ getCount () рд╡рд╛рдкрд╕ рдЖрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдЕрдкрд╡рд╛рдж рд╣реИ рдЬреЛ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк MyContainer рд╡рд░реНрдЧ рдХреЗ рд╕рдорд╛рди рдПрдХ рд╡рд░реНрдЧ рдкрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рджреЗрдЦреЗрдВ рдЬреЛ рд▓реЗрдЦрдХ рд╣реИ рдФрд░ рдХрд╡рд░ рдХреЗ рдиреАрдЪреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдЫрд┐рдбрд╝рдХрддрд╛ рд╣реИред



рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдпрджрд┐ рдХреЛрдИ рд╡рд┐рдзрд┐ рдПрдХ рдЕрдВрддрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрдк рдЗрдВрдЯреАрдЧрд░ рдирд▓ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрдирдмреЙрдХреНрд╕рд┐рдВрдЧ рд╣реЛ рдЬрд╛рдПрдЧреА, рдЗрд╕рд▓рд┐рдП рдПрдирдкреАрдИ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ред



рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдбрд┐рдмрдЧрд░ рдХреЛ рдХрдо рдмрд╛рд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: рдХреБрдЫ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рдмрд╛рдж, рд╕рд┐рд░ рдореЗрдВ рдХреЛрдб рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЕрдХреНрд╕рд░ рдПрдХ рдорд╛рдпрд╛рд╡реА рд╕реНрдерд┐рддрд┐ рдХреЗ рдкреНрд░рдЬрдирди рд╕реЗ рддреЗрдЬ рд╣реЛрддрд╛ рд╣реИред



All Articles