是否可以在Java 1.7中使用类似的泛型?
class Test<T> {
public <Z extends T & Serializable> void method(Z test) {
...
}
}
我希望我的方法只接受实现特定接口的泛型类型的对象。
答案 0 :(得分:1)
不,遗憾的是,无法将泛型extends
与泛型类型和接口一起使用。实际上,甚至不可能将泛型extends
用于多种类型。如果可以,那么您可以执行以下操作。
class Test<T, B extends Serializable> {
public <Z extends T & B> void method(Z test) {
...
}
}
这种针对扩展多种类型的限制可能是因为type erasure。在运行时,将删除泛型,public <Z extends Serializable>
只会变为public Serializable
。那么<Z extends T & Serializable>
会被替换为什么?
答案 1 :(得分:1)
最接近的形式是:
class Test<T extends Serializable>
{
public <Z extends T> void method(Z test)
{
}
}