• java里null强转为某个类会报错吗?


    1.定义一个User类如下:
    /**
    * @author lizhibiao
    * @date 2018/11/27 17:21
    */
    public class User
    {
    private String userName;

    private int age;

    private int cutScore;

    public String getUserName()
    {
    return userName;
    }

    public void setUserName(String userName)
    {
    this.userName = userName;
    }

    public int getAge()
    {
    return age;
    }

    public void setAge(int age)
    {
    this.age = age;
    }

    public int getCutScore() {
    return cutScore;
    }

    public void setCutScore(int cutScore) {
    this.cutScore = cutScore;
    }
    }
     
    2.测试null是否可以转为User类
    public class Test
    {
    public static void main(String[] args)
    {
    User user = (User)null;
    System.out.println(user);
    }
    }
    运行结果如下:
    null
     
    也就是输出值为null,所以null可以强转为某个类编译不报错,但是强转后还是为null
     
     
    3.如果null来调用方法则会报错
    public class Test
    {
    public static void main(String[] args)
    {
    User user = (User)null;
    System.out.println(user.getUserName());
    }
    }
    运行结果如下:
    Exception in thread "main" java.lang.NullPointerException
     at str.Test.main(Test.java:11)
     
    报空异常
     
     
    4.今天有网友加好友,给我发了一个例子,发现null强转某个对象后,调用方法居然不报空指针。然后我按他的意思写了个例子如下:
    /**
    * Hello world!
    *
    */
    public class App
    {
    private void commonMethod()
    {
    System.out.println("commonMethod");
    }

    private static void staticMethod()
    {
    System.out.println("我是静态方法");
    }


    public static void main(String[] args)
    {
    App app = (App)null;

    //调用静态方法,不报错
    app.staticMethod();

    //调用普通方法,报空指针
    app.commonMethod();
    }
    }
    运行结果:
     
    分析:发现没,null强转为对象后,调用静态方法居然是不会报错的,调用普通方法会报空指针。原因是,我们在进行App app = (App)null强转操作时,虽然对象app是为null没有引用的,但是java里调用静态方法不需要创建实例对象,静态成员应该通过类型来访问,也就是类名.静态方法()就可以调用了静态方法了。所以,app.staticMethod()调用静态方法不报错。
     
    感谢这位网友,也欢迎大家有疑问添加微信:lizb0907,进行交流。
    最后,以后不怎么在博客园上写文章了,在新搭的博客上写文章:
    有兴趣的伙伴们可以来交流,
    坚持做好一件事!
     
     
    有疑问,扫我二维码添加微信,欢迎骚扰!
    坚持做一件事,一起学习。


    <wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

  • 相关阅读:
    第一次作业
    1-10的四则运算
    实验九
    实验五
    实验四
    实验三
    实验二
    实验一
    汇编第一章总结
    实验九
  • 原文地址:https://www.cnblogs.com/lizb0907/p/10076971.html
Copyright © 2020-2023  润新知