以下是代码段:
ByteBuffer buf = ByteBuffer.allocate(deleteInfo.size);
for(int j = 0; j < deleteInfo.size; j++)
buf.put(j,(byte)'.');
以上是最后一行的警告:
Unnecessary cast to byte
我同意,但是当我删除演员......
buf.put(j, '.');
......这是错误:
incompatible types; possible lossy conversion from char to byte
我意识到char
是Unicode中的两个字节,所以这肯定是错误的原因。在char
到byte
的演员表中,警告没有任何负面影响,因为我的所有数据都是ASCII。 (我尝试使用实际的ASCII代码'。';相同的结果。)
所以我可以放心地忽略错误,但我想“合法地”解决这个问题,而不仅仅是关闭或忽略警告机制。
显示在页面上提交问题的主题似乎都没有解决问题。谷歌出现getBytes
而System.getProperty("file.encoding")
返回“UTF-8”而我没有说我想使用该编码,但我看不到如何应用getBytes("UTF-8")
(或其他任何内容) buf
。
我如何编码以避免警告?或者我应该把它写下来作为一个危险的 - 如果我这么做 - 如果我不做Netbeans的怪癖?
答案 0 :(得分:2)
您不一定需要添加代码来消除警告。
打开NetBeans并导航到工具 - &gt;选项 - &gt;编辑。转到&#39; Hints&#39;选项卡,选择java并打开标准Javac警告&#39;下拉并取消选中“不必要的演员”#39;框。
如果您使用的是Mac,那么所有步骤都是相同的,除了转到 工具 - &gt;选项转到NetBeans - &gt;偏好。
或者,您可以在投射该内容的方法上方添加@SuppressWarnings("cast")
。
答案 1 :(得分:1)
这很可怕而且很麻烦,但你可以避免使用:
".".getBytes()[0]
这实际上就是你想要的。 char
实际上是不同服装中的int
,你想要int的低字节 - 这就是它。