2014-10-31 205 views
0

扩展泛型类而不指定类型参数是否有效?我并不在乎类型参数,并且希望在我的类的层次结构下停止泛型。扩展泛型而不指定类型参数的非泛型类型

例如:如果存在类别A<T,U>其中TU是类型参数。

class B extends A { ... } 

另外,是否可以指定一个参数并跳过另一个?语法是什么?以下行不通:

class C<U> extends A<?,U> { ... } 
+2

相关:[什么是原始类型,为什么我们不应该使用它?](http://stackoverflow.com/questions/2770321/what-is-a-raw-type-and-why-shouldnt-我们使用它) – 2014-10-31 01:59:00

+0

感谢@SotiriosDelimanolis在我的情况下,层次结构变得非常复杂,我没有足够的时间从上到下删除类型参数。因此试图减少它在我的代码中的使用。 – 2014-10-31 02:04:12

回答

0

未指定类型称为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> { ... } 

这将正常的,不会让你做任何意外疯狂。

+0

我应该在问题中包含此代码。但在我的情况下,我继承了这个接口的接口:'SuperInterface ,K扩展ParentInterface>扩展SuperSuperInterface '我如何将接口从'SuperInterface'扩展到上面? – 2014-10-31 18:48:22

+0

@AsadIqbal看起来像递归泛型。我最好的猜测就像'class Sub extends SuperInterface '。但我不知道如何使用您的项目类。 – Radiodef 2014-10-31 18:57:31