1

我正在学习Java。我的任务是使用 DictionaryInterface 实现 HashDictionary

Hashtable<K,V> h;
Set<K> s = h.keySet();
K elements[]=(K[])Array.newInstance(KeyType, h.size());

当我写完上述语句后,Eclipse IDE 会显示一条警告消息。

@SuppressWarnings("unchecked")

如果我在方法开始之前添加上述消息。警告消失。这是什么意思。任何人都可以给出原因吗?提前致谢

4

3 回答 3

3

一般来说,警告就是 - 警告。很容易出错的事情,但在技术上还没有出错。有时你很清楚它们,可以简单地忽略它们。在这些情况下,您可能想要使用@SuppressWarnings("unchecked"). 这将向编译器发出不发布警告的信号,从而为您提供绝对干净的编译。

请注意,即使您没有将其放在那里并且确实收到警告,您的程序仍然可以正常工作。只是你的程序在那个时候中断的可能性很大。

如果需要,您还可以通过转到Windows > Preferences > General > Editors > Text Editors > Annotations > Warnings > Annotation types然后选择您想要/不想要的警告来完全从 Eclipse 中删除警告。

于 2013-10-04T04:27:27.957 回答
2

注释类型SuppressWarnings支持程序员控制 Java 编译器发出的警告。它包含一个元素,即array of String. 如果程序声明使用 annotation 进行注释@SuppressWarnings(value = {someString}),则 Java 编译器不得报告由以下之一标识的任何警告,someString如果该警告将作为带注释的声明或其任何部分的结果生成。

例如,未经检查的警告由字符串标识unchecked。在您的示例中,以下语句将发出未经检查的警告:

K elements[]=(K[])Array.newInstance(KeyType, h.size());

该语句包含未经检查的转换,因为编译器不知道强制转换是否安全;并且只会发出未经检查的转换警告。可以通过使用@SuppressWarnings("unchecked")注释来抑制。

于 2013-10-04T04:40:48.630 回答
1

如果您还不知道(您说您是初学者),Eclipse 经常会告诉您是什么导致了警告,并且有时可以为您提供有关如何修复它的建议。

当然,修复警告总是比抑制警告好得多(除非你正在做非常复杂的事情)。希望这可以帮助。

于 2013-10-04T04:31:18.190 回答