不是封闭类 Java

新手上路,请多包涵

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

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 {
    }
}

我究竟做错了什么 ?

原文由 V Sebi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 679
2 个回答

ZShape 不是静态的,所以它需要一个外部类的实例。

最简单的解决方案是制作 ZShape 和任何嵌套类 static 如果可以的话。

我也会制作任何字段 finalstatic final 你也可以。

原文由 Peter Lawrey 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

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

原文由 Vishal Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题