我了解到您不能在泛型类中声明静态变量/方法,我真的不知道如何解决我的问题或变通,所以我请求您的指导。
我想要的是我的所有核心类都将扩展的通用“索引”。
我正在创建一个游戏引擎,一个例子是我将拥有不同的游戏状态,它们都扩展了 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/