![](/img/trans.png)
[英]Why is my code telling me to initialize a variable that is already initialized?
[英]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.