什么是Java中的“未检查”?

什么是Java中的“未检查”?

在查看代码时,我看到许多方法指定了注释:

@SuppressWarnings("unchecked")

这是什么意思?


蝴蝶刀刀
浏览 508回答 3
3回答

翻阅古今

有时候Java泛型就是不允许你做你想做的事情,你需要有效地告诉编译器你在做什么将要在执行时合法。当我模拟一个通用接口时,我通常会发现这很痛苦,但是还有其他一些例子。通常值得尝试找出一种避免警告的方法,而不是压制它(Java泛型常见问题)但有时即使它是可能的话,它会使代码变形得太厉害,所以抑制警告就更整洁了。在这种情况下,总是添加一个解释性的注释!相同的泛型FAQ有几个关于这个主题的部分,从“什么是”未经检查“的警告?”-值得一读

杨__羊羊

它是一个注释,用于抑制关于未经检查的一般操作(而不是异常)的编译警告,例如强制转换。从本质上说,这意味着程序员不希望在编译特定代码时得到通知,因为他已经知道了这一点。您可以在这里阅读更多关于这个特定注释的内容:抑制警告此外,Oracle还在这里提供了一些关于注释使用的教程文档:注解就像他们说的,“当与泛型出现之前编写的遗留代码(在题为泛型的课程中讨论)进行接口时,可能会出现‘未检查’警告。”

泛舟湖上清波郎朗

这也可能意味着当前的Java类型系统版本对您的情况还不够好。有几个JSR命题/hack来修复这个问题:输入令牌,超级代币、CAST()类。如果您确实需要这种抑制,请尽量缩小它(例如,不要将它放在类本身或长方法上)。例如:public&nbsp;List<String>&nbsp;getALegacyListReversed()&nbsp;{ &nbsp;&nbsp;&nbsp;@SuppressWarnings("unchecked")&nbsp;List<String>&nbsp;list&nbsp;= &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(List<String>)legacyLibrary.getStringList(); &nbsp;&nbsp;&nbsp;Collections.reverse(list); &nbsp;&nbsp;&nbsp;return&nbsp;list;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java