我正在开发一个内部类
的类我的代码:
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
这样的东西初始化它时,我得到一个空指针异常(这并不奇怪!)但是我不知道我可以初始化变量,因为到目前为止我可以理解它只是一个实例示例超类中的Target子类(这是对的吗?)。此外Target
没有构造函数,因此我无法在new
上声明target
以初始化变量。
那我该怎么办?
如果我对此的理解不正确,请纠正我。我仍然试图围绕Java更“深入”的工作方式。
答案 0 :(得分:2)
变量test
确实未初始化:
public static Test test;
初始化意味着将值放入变量,例如:test = SOMETHING;
SOMETHING可以是null
,也可以是变量类型的实例。在你的情况下:
test = null;
test = new Test();
是有效的表达。
确实,如果你将null放到test
,你就不能“使用”它,即调用它的方法或访问它的成员变量。
顺便说一句。您可能认为Test
不是Example
的子类。这是它的内在阶级。子类是一个扩展其他类的类。实际上Test
是对象的直接子类。
答案 1 :(得分:1)
实际上你可以初始化一个你没有为它声明构造函数的类 它有一个没有参数的默认构造函数
test = new Test();