java.lang.NullPointerException 解决(toString())

前言

众所周知 空指针这个异常是经常遇到的,最常见的bug,就算是大牛也不可避免,找这个问题着实让人头大

案例:

程序经常会用到 toString()方法,但是这样会造成很大的 java.lang.NullPointerException 风险
  public static void main(String[] args) {
    Object obj = null;
    System.out.println("a=" + (String)null);   //  ① a=null
    System.out.println("b=" + (String)obj);   //   ②  b=null
    System.out.println("c=" + String.valueOf(obj));//  ③ c=null
    System.out.println("d= "+ "".toString()); // ④  d=
    System.out.println("e=" + String.valueOf(null)); // ⑤ java.lang.NullPointerException
    System.out.println("f=" + String.valueOf("null")); //⑥ f=null
}

结论:

  使用 强转 和 String.valueOf()  可以有效避免   java.lang.NullPointerException

疑问?

③和⑤ 不是一样吗?
这个还真不一样,String.valueOf()是一个重载方法
看String.valueOf(obj) 源码

  • Returns the string representation of the {@code Object} argument.
    *

    • @param obj an {@code Object}.

    • @return if the argument is {@code null}, then a string equal to

    •      {@code "null"}; otherwise, the value of
      
    •      {@code obj.toString()} is returned.
      
    • @see java.lang.Object#toString()
      */
      public static String valueOf(Object obj) {

          return (obj == null) ? "null" : obj.toString();   //   "null".toString();
      

    }

猜你喜欢

转载自blog.csdn.net/WindwirdBird/article/details/105009200