在Eclipse中,我给予警告,使用 'rawtypes' 和它的一个补丁是增加<?>
。例如:
Class parameter = String.class;
//Eclipse would suggest a fix by converting to the following:
Class<?> parameter = String.class;
<?>
究竟是什么意思?
在Eclipse中,我给予警告,使用 'rawtypes' 和它的一个补丁是增加<?>
。例如:
Class parameter = String.class;
//Eclipse would suggest a fix by converting to the following:
Class<?> parameter = String.class;
<?>
究竟是什么意思?
原始类型指的是使用泛型而不指定类型参数。例如,List是原始类型,而列表<字符串>是一个参数化类型
更多信息请参阅本文档:http://www.javapractices.com/topic/TopicAction.do?Id=224
这远远超出了网站的范围,但这里有一些链接:
类是自Java 5(多年前)以来的泛型类型。
编译器抱怨是因为表示通用通配符,因为在括号内指定的类型可以是任何引用类型。 Java更喜欢强大的输入,并向您发出警告,说服您指定具体类型作为类型说明符。
例如:
Class<String> parameter = String.class;
Class<?>
应该被解释为东西Class
,但东西是不知道或关心。
这是使用Java通用类型。 Java 5或更高版本中的Class
是一个参数化类型,因此编译器需要一个类型参数。 Class<String>
可以在你的代码的特定上下文中工作,但是在很多情况下,你不关心实际的类型参数,所以你可以使用Class<?>
告诉编译器,你知道Class
需要一个类型参数,但是你不关心参数是什么。
该警告意味着List
预计项目的类型,但您没有指定一个。由于编译器无法分辨出您是否犯了错误或忘记了某些内容,因此会发出警告。
有几种解决方案:如果您真的不在乎列表中的内容,请使用<?>
。它的意思是“可以是任何东西,我不在乎。“
如果你可能不在乎,但这个是旧的遗留代码,你不想解决它,告诉Eclipse与@SuppressWarnings("rawtypes")
和/或@SuppressWarnings("unchecked")
忽略它,如果你铸造。
的最佳解决方案就是找出正确的类型并使用它。这样,编译器就可以帮助你在编译时捕获更多的拼写错误
如果你想更深入的泛型,请参见[有效的第5章](http:// java。 sun.com/docs/books/effective/generics.pdf) – oliholz
恕我直言,它代表混乱;;) –