下面是代码片段:
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的怪癖?
发布于 2014-04-05 22:47:17
它既可怕又繁琐,但您可以通过以下方式来避免演员:
".".getBytes()[0]
这正是你想要的。char
实际上是一个穿着不同衣服的int
,您需要int的低字节--这就是它所做的。
发布于 2014-04-05 21:55:29
您不一定需要添加代码来消除警告。
打开NetBeans并导航到Tools -> Options -> Editor。转到“提示”选项卡,选择java并打开“Standard警告”下拉菜单,并取消选中“不必要的强制转换”框。
如果您使用的是Mac,那么所有步骤都是相同的,除了Tools ->选项转到NetBeans ->首选项之外。
或者,您可以将@SuppressWarnings("cast")
添加到要转换该内容的方法之上。
https://stackoverflow.com/questions/22887218
复制相似问题