You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 19:01:20