Java嵌入式类,什么时候使用静态还是非静态



我正在做一个关于Java类的练习。代码如下。

如果在嵌入的调用Explorer之前添加一个静态修饰符,我可以毫无问题地运行代码。然而,如果我不添加"静态",我会看到以下错误:

内部类Government中的静态声明非法。只有常量变量声明中才允许使用资源管理器修饰符"static"。

顺便说一句,该练习来自加州大学伯克利分校2018年春季CS61B。此处提供原始代码:

public class Government {
private int treasury = 5;
public static Government greaterTreasury(Government a, Government b) {
if (a.treasury > b.treasury) {
return a;
}
return b;
}

public static class Explorer {
public static void doStuff(Government a, Government b) {
Government favorite = Government.greaterTreasury(a, b);
System.out.println("The best government has treasury " + favorite.treasury);            
}
}
public static void main(String[] args){
Government a = new Government();
a.treasury = 10;
Government b = new Government();
b.treasury = 11;
Government.Explorer.doStuff(a, b);
}
}

如果没有外部类的实例,就不能引用非静态内部类。

内部类不能有静态成员(常量除外(

请参阅为什么可以';我们在(非静态的(内部类中有静态方法吗?

最新更新