java - 在泛型类中声明静态泛型变量

标签 java list generics static linked-list

我了解到您不能在泛型类中声明静态变量/方法,我真的不知道如何解决我的问题或变通,所以我请求您的指导。

我想要的是我的所有核心类都将扩展的通用“索引”。 我正在创建一个游戏引擎,一个例子是我将拥有不同的游戏状态,它们都扩展了 State谁又扩展了Nexus<State> .我想要静态头部和尾部的原因是我可以保留所有游戏状态的链接列表,因为它们在创建时都已添加到该列表中。

另一个例子是我会有不同的游戏对象,它们都扩展了 GameObject谁又扩展了Nexus<GameObject> .

这是名为 Nexus 的索引:

public abstract class Nexus<T> 
{

    private static T head = null;
    private static T tail = null;

    private T next = null;
    private static int num = 0;

    protected Nexus() { this.Add( (T)this ); }

    public T Add( T obj )
    {

        ((Nexus)obj).next = null;
        if( num++ == 0 ) head = tail = obj;
        else             tail = ( tail.next = obj );

        return obj;

    }

}

如果有人有其他解决方案或解决方法,我会洗耳恭听!

最佳答案

Java 泛型与 C# 泛型有很大不同。 有类型删除,所以你不能说像 Nexus<T>.aStaticPublicField 这样的东西(如在 C# 中)。 你只能说Nexus.aStaticPublicField . 无法知道泛型类型是什么(因为您没有实例),因此您不能拥有类型 T 的静态字段。

关于java - 在泛型类中声明静态泛型变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6577089/

相关文章:

python - 如何从列表和字典中生成输出并将它们的结果输出与字典值匹配?

perl - 为什么我的 Perl 打印显示 HASH(0x100a2d018)?

c# - 如何在 C# 接口(interface)中使用泛型类型参数

ios - 符合通用协议(protocol)的结构类型,其关联类型也是协议(protocol)

java - 使用注解强制方法实现

java - HttpSecurity permitAll 和 WebSecurity 忽略未验证 URL 的功能?

java - 在部署到 tomcat 之前(或期间)如何管理 .war 文件中的库版本?

java - 用于浏览器缓存的 Servlet 过滤器?

android - 按字母顺序排列的已安装应用程序列表

java - 从 Class<T> 到 Thing<T> 的类型安全映射