Java内部类访问报错:需外部类实例(LibGDX安卓开发场景)
解决LibGDX中实例化非静态内部类时的
an instance for an enclosing class is required错误 你遇到的问题是因为GameObject是非静态内部类,这类类必须依赖外部类classes的实例才能创建对象,直接通过new classes.GameObject(...)调用会触发报错。
解决方案一:将内部类改为静态内部类(推荐)
给GameObject类添加static关键字,使其成为静态内部类,这样它就不再依赖外部类的实例,可直接独立创建对象:
public class classes{ // 添加static关键字,转为静态内部类 public static class GameObject{ private Texture texture; private Texture[] spawnAnimation; public GameObject(Texture txtr, float width, float height, float x, float y) { // 构造方法实现 } // 其他方法 } }
修改后你原来的实例化代码就能正常运行。
解决方案二:先创建外部类实例,再实例化内部类
如果需要保留非静态内部类的特性,可先创建外部类classes的实例,再通过该实例创建内部类对象:
@Override public void create() { classes outerInstance = new classes(); gun = outerInstance.new GameObject(new Texture(Gdx.files.internal("gun.png")), 0, 0, 300, 300); }
额外建议
遵循Java命名规范,将类名classes改为大驼峰格式的有意义名称,比如GameComponents或GameObjectContainer,提升代码可读性。
内容的提问来源于stack exchange,提问作者tfk
相关产品推荐
相关产品推荐

