为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蝴蝶刀刀 2019-07-11 15:12:12
什么是Java中的“未检查”?在查看代码时,我看到许多方法指定了注释:@SuppressWarnings("unchecked")这是什么意思?
查看完整描述

3 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

有时候Java泛型就是不允许你做你想做的事情,你需要有效地告诉编译器你在做什么将要在执行时合法。

当我模拟一个通用接口时,我通常会发现这很痛苦,但是还有其他一些例子。通常值得尝试找出一种避免警告的方法,而不是压制它(Java泛型常见问题)但有时即使它可能的话,它会使代码变形得太厉害,所以抑制警告就更整洁了。在这种情况下,总是添加一个解释性的注释!

相同的泛型FAQ有几个关于这个主题的部分,从“什么是”未经检查“的警告?”-值得一读


查看完整回答
反对 回复 2019-07-11
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

它是一个注释,用于抑制关于未经检查的一般操作(而不是异常)的编译警告,例如强制转换。从本质上说,这意味着程序员不希望在编译特定代码时得到通知,因为他已经知道了这一点。

您可以在这里阅读更多关于这个特定注释的内容:

抑制警告

此外,Oracle还在这里提供了一些关于注释使用的教程文档:

注解

就像他们说的,

“当与泛型出现之前编写的遗留代码(在题为泛型的课程中讨论)进行接口时,可能会出现‘未检查’警告。”


查看完整回答
反对 回复 2019-07-11
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

这也可能意味着当前的Java类型系统版本对您的情况还不够好。有几个JSR命题/hack来修复这个问题:输入令牌,超级代币、CAST()类。

如果您确实需要这种抑制,请尽量缩小它(例如,不要将它放在类本身或长方法上)。例如:

public List<String> getALegacyListReversed() {
   @SuppressWarnings("unchecked") List<String> list =
       (List<String>)legacyLibrary.getStringList();

   Collections.reverse(list);
   return list;}


查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 507 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信