繁体   English   中英

为什么IntelliJ告诉我该变量尚未初始化?

[英]Why is IntelliJ telling me this variable has not been initialized?

我正在与内部班级一起上课

我的代码:

package com.solignis;
public class Config {
    public static final Target target;
    class Target {
        public void create(String targetName) {    
            System.out.println("Created" + targetName);   
        }

        public void destroy(String targetName) {    
            System.out.println("Destroyed" + targetName);    
        }
    }    
}

IntelliJ认为子类没有任何问题,但是一直抱怨我没有初始化静态变量target 但是,当我尝试使用诸如null东西初始化它时,会得到一个null指针异常(那里就不足为奇了!),但是我却无法用它来初始化变量,因为到目前为止我只能理解Target子类的所有实例在Example超类中(对吗?)。 而且Target没有构造函数,因此我无法在target上声明new变量以初始化变量。

那我该怎么办?

如果对我的理解不正确,请指正我,我仍在努力使Java更“深入”。

变量test确实未初始化: public static Test test;

初始化意味着将值放入变量,例如: test = SOMETHING;

SOMETHING可以为null也可以为变量类型的实例。 在您的情况下:

test = null;
test = new Test();

是有效的表达式。

确实,如果将null置于test ,则不能“使用”它,即调用其方法或访问其成员变量。

顺便说一句。 正如您认为的那样, Test不是Example的子类。 它是它的内在阶级。 子类是扩展其他类的类。 实际上, Test是对象的直接子类。

实际上,您可以初始化一个没有声明构造函数的类,因为它具有一个没有参数的默认构造函数

    test = new Test();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM