1

我正在研究一个有内部课程的课程

我的代码:

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 子类的一个实例Example 超类(对吗?)。也Target没有构造函数,所以我不能声明newtarget初始化变量。

那么我能做什么呢?

如果我对此的理解不正确,请纠正我我仍在尝试围绕 Java 更“更深”的工作原理。

4

2 回答 2

2

该变量test确实没有初始化: public static Test test;

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

SOMETHING 可以是null变量类型中的一个或一个实例。在你的情况下:

test = null;
test = new Test();

是有效的表达式。

事实上,如果你把 null 放在test你不能“使用”它,即调用它的方法或访问它的成员变量。

顺便提一句。可能不是您认为Test的子类。Example这是它的内部类。子类是扩展其他类的类。实际上Test是对象的直接子类。

于 2013-05-25T07:42:37.410 回答
1

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

    test = new Test();
于 2013-05-25T07:40:31.550 回答