不是封闭类 Java

2022-08-31 04:40:29

我正在尝试制作俄罗斯方块游戏,但我收到编译器错误

Shape is not an enclosing class

当我尝试创建对象时

public class Test {
    public static void main(String[] args) {
        Shape s = new Shapes.ZShape();
    }
}

我对每个形状使用内部类。这是我的代码的一部分

public class Shapes {
    class AShape {
    }
    class ZShape {
    }
}

我做错了什么?


答案 1

ZShape不是静态的,因此它需要外部类的实例。

最简单的解决方案是尽可能创建 ZShape 和任何嵌套类。static

我也会做任何字段,或者你也可以。finalstatic final


答案 2

假设 RetailerProfileModel 是 Main 类,RetailerPaymentModel 是其中的一个内部类。您可以在该类外部创建 Inner 类的对象,如下所示:

RetailerProfileModel.RetailerPaymentModel paymentModel
        = new RetailerProfileModel().new RetailerPaymentModel();

推荐