Netbeans警告类型转换过强,但如果删除强制转换则会出错

时间:2014-04-05 21:43:09

标签: java netbeans casting bytebuffer

以下是代码段:

    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中的两个字节,所以这肯定是错误的原因。在charbyte的演员表中,警告没有任何负面影响,因为我的所有数据都是ASCII。 (我尝试使用实际的ASCII代码'。';相同的结果。)

所以我可以放心地忽略错误,但我想“合法地”解决这个问题,而不仅仅是关闭或忽略警告机制。

显示在页面上提交问题的主题似乎都没有解决问题。谷歌出现getBytesSystem.getProperty("file.encoding")返回“UTF-8”而我没有说我想使用该编码,但我看不到如何应用getBytes("UTF-8")(或其他任何内容) buf

我如何编码以避免警告?或者我应该把它写下来作为一个危险的 - 如果我这么做 - 如果我不做Netbeans的怪癖?

2 个答案:

答案 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的低字节 - 这就是它。