扩展泛型类而不指定类型参数是否有效?我并不在乎类型参数,并且希望在我的类的层次结构下停止泛型。扩展泛型而不指定类型参数的非泛型类型
例如:如果存在类别A<T,U>
其中T
和U
是类型参数。
class B extends A { ... }
另外,是否可以指定一个参数并跳过另一个?语法是什么?以下行不通:
class C<U> extends A<?,U> { ... }
扩展泛型类而不指定类型参数是否有效?我并不在乎类型参数,并且希望在我的类的层次结构下停止泛型。扩展泛型而不指定类型参数的非泛型类型
例如:如果存在类别A<T,U>
其中T
和U
是类型参数。
class B extends A { ... }
另外,是否可以指定一个参数并跳过另一个?语法是什么?以下行不通:
class C<U> extends A<?,U> { ... }
未指定类型称为raw type。问题在于它可以让你做不安全的东西。
下面是一个简单的例子:
class A<T> {
T t;
}
class B extends A {
}
// somewhere
A<String> a = new B();
则会出现警告的任务,但它是完全可编译的Java。
另外,是否可以指定一个参数并跳过另一个?
不,不是真的。对于你的情况,我会建议使用Object进行参数化。 (如果参数声明了一个上限喜欢<T extends SomeType>
使用SOMETYPE而不是对象。)
class B extends A<Object, Object> { ... }
class C<U> extends A<Object, U> { ... }
这将正常的,不会让你做任何意外疯狂。
我应该在问题中包含此代码。但在我的情况下,我继承了这个接口的接口:'SuperInterface
@AsadIqbal看起来像递归泛型。我最好的猜测就像'class Sub extends SuperInterface '。但我不知道如何使用您的项目类。 – Radiodef 2014-10-31 18:57:31
相关:[什么是原始类型,为什么我们不应该使用它?](http://stackoverflow.com/questions/2770321/what-is-a-raw-type-and-why-shouldnt-我们使用它) – 2014-10-31 01:59:00
感谢@SotiriosDelimanolis在我的情况下,层次结构变得非常复杂,我没有足够的时间从上到下删除类型参数。因此试图减少它在我的代码中的使用。 – 2014-10-31 02:04:12