非泛型类型,在不指定类型参数的情况下扩展泛型类型

时间:2014-10-31 01:58:13

标签: java generics

在不指定类型参数的情况下扩展泛型类是否有效。我并不真正关心类型参数,并希望在我的班级层次结构中停止使用泛型。

例如:如果有A<T,U>TU是类型参数。

class B extends A { ... }

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

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

1 个答案:

答案 0 :(得分:0)

不指定类型称为raw type。问题在于它可以让你做不安全的事情。

这是一个简单的例子:

class A<T> {
    T t;
}

class B extends A {
}

// somewhere
A<String> a = new B();

为作业提出了警告,但它完全可以编译Java。

  

此外,是否可以指定一个参数并跳过另一个参数?

不,不是真的。根据您的情况,我建议使用Object进行参数化。 (如果使用像<T extends SomeType>这样的上限声明参数,请使用SomeType而不是Object。)

class B extends A<Object, Object> { ... }
class C<U> extends A<Object, U> { ... }

这将表现正常并且不会让你做任何意外事故。