java - NullPointerException 或将打印静态变量的内容

标签 java static nullpointerexception static-members

<分区>

我遇到了以下代码:

public class TradingSystem {

    private static String category = "electronic trading system";

    public static void main(String[] args) {
        TradingSystem system = null;
        System.out.println(system.category);
}

Output : 电子交易系统

我很惊讶没有找到 NullPointerException !

Q1。为什么它不抛出 NullPointerException

Q2。或者在编译时,由于类别的声明 static 使得它用 TradingSystem 替换系统(即对象引用),因此本质上是 TradingSystem.category 被调用?

最佳答案

Java 允许使用实例语法访问类变量(即 static)。换句话说,编译器让你写 system.category , 但它将其解析为 TradingSystem.category ,它独立于访问它的实例。

这就是为什么你没有得到 NullPointerException .但是,此语法不可读且令人困惑。这就是为什么您应该收到警告和使用 TradingSystem.category 的建议的原因。而不是 system.category .

关于java - NullPointerException 或将打印静态变量的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27147730/

相关文章:

java - 使用@Cacheable注解时加载ApplicationContext失败

java - android中不显示特殊字符

C#——给定一个类的实例,如何访问该类的静态成员?

java - "AWT-EventQueue-0"NullpointerException 不一致错误信息

java - 在Android中设置一个字符串,记录该字符串,空指针

java - Gson 中的 DateFormat 模式 "yyyy-MM-dd' T'HH :mm:ss. SSS'Z'"

java - Hibernate一对一映射问题

C++ (gcc/g++) 两个巨大的字符串数组需要很长时间才能编译

c++ - 具有静态属性的模板继承(服务定位器模式)

java - 从 Selenium 中的配置属性文件读取值时出现空指针异常