用Class <?替换Class是一种好习惯吗?扩展Object>以避免警告?

use*_*277 9 java generics warnings raw-types

在我的代码中,我有类似的东西:

public Class mySpecialMethod() {
  return MySpecialClass.class;
}
Run Code Online (Sandbox Code Playgroud)

这导致警告

类是原始类型.应参数化对泛型类的引用.

但是,如果我更换

Class

Class<? extends Object>

警告消失了.

这个简单的练习可以,或者以后会引起麻烦吗?

Joa*_*uer 15

只有在没有Class对象需要表示的公共基类或接口时,这才是正确的做法.

Class<?>实际上是一样的Class<? extends Object>.


gue*_*rda 6

是的,这是完全正确的.

您需要指定类型.如果你不能,你必须指定通配符.

进一步阅读:Java语言规范:参数化类型


Gui*_*ume 6

根据您想要实现的目标,您可以更加精确:

public Class<MySpecialClass> mySpecialMethod() {
  return MySpecialClass.class;
}
Run Code Online (Sandbox Code Playgroud)