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

时间:2010-11-18 12:24:26

标签: java generics

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

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

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

这应该失败:

MyClass myInstance = new MyClass();

这应该有效:

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

2 个答案:

答案 0 :(得分:2)

你不能用Java做到这一点。所有泛型类都有相应的原始类型

如果您碰巧使用Eclipse,则可以将其设置为针对原始类型的所有使用产生编译错误:

窗口 - &gt;偏好 - &gt; Java /编译器/错误 - &gt;通用类型 - &gt;将“原始类型的使用”设置为错误。

答案 1 :(得分:1)

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

public MyClass(Class<T> type) {
    this.type = type; 
}