2010-11-18 46 views
1

如何强制设置类型以创建通用实例?如何强制设置类型来创建一个通用实例?

public class MyClass<T extends MyClass2> { /* ... */ } 

public class A extends MyClass2 { /* ... */ } 

这应该会失败:

MyClass myInstance = new MyClass(); 

这应该工作:

MyClass<A> myInstance = new MyClass<A>(); 

回答

2

你不能在Java中这样做。所有通用类都有相应的原始类型

如果你碰巧但是使用Eclipse,你可以将其设置为产生一个编译错误的原始类型的所有用途:

窗口 - >首选项 - >的Java /编译器/错误 - >泛型类型 - >设置“使用原始类型”错误。

1

那是不可能的。如果你想要一个运行时检查,你最好的办法是提供一个唯一的构造函数,它将类型作为参数。

public MyClass(Class<T> type) { 
    this.type = type; 
} 
相关问题