首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Netbeans警告类型强制转换太强,但如果删除强制转换,则会出错

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

Stack Overflow用户
提问于 2014-04-05 21:43:08
回答 2查看 651关注 0票数 2

下面是代码片段:

代码语言:javascript
运行
复制
    ByteBuffer buf = ByteBuffer.allocate(deleteInfo.size);
    for(int j = 0; j < deleteInfo.size; j++)
      buf.put(j,(byte)'.');

下面是上面最后一行的警告:

代码语言:javascript
运行
复制
Unnecessary cast to byte

我同意,但当我移除石膏时.

代码语言:javascript
运行
复制
  buf.put(j, '.');

..。以下是错误:

代码语言:javascript
运行
复制
incompatible types; possible lossy conversion from char to byte

我意识到char是Unicode中的两个字节,所以这肯定是错误的原因。在将char转换为byte的过程中,警告没有负面影响,因为我所有的数据都是ASCII。(我尝试使用“.”的实际ASCII代码;相同的结果。)

所以我可以安全地忽略错误,但是我想要“合法地”处理这个错误,而不仅仅是关闭或忽略警告机制。

页面上出现的提交问题的主题中,没有一个能解决问题。谷歌出现了getBytesSystem.getProperty("file.encoding")返回"UTF-8“,我没有说我想使用这种编码,但我不知道如何将getBytes("UTF-8") (或其他任何东西)应用于buf

如何编码以避免警告?或者我应该把它写成一个危险的-如果-如果-我-不Netbeans的怪癖?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-05 22:47:17

它既可怕又繁琐,但您可以通过以下方式来避免演员:

代码语言:javascript
运行
复制
".".getBytes()[0]

这正是你想要的。char实际上是一个穿着不同衣服的int,您需要int的低字节--这就是它所做的。

票数 1
EN

Stack Overflow用户

发布于 2014-04-05 21:55:29

您不一定需要添加代码来消除警告。

打开NetBeans并导航到Tools -> Options -> Editor。转到“提示”选项卡,选择java并打开“Standard警告”下拉菜单,并取消选中“不必要的强制转换”框。

如果您使用的是Mac,那么所有步骤都是相同的,除了Tools ->选项转到NetBeans ->首选项之外。

或者,您可以将@SuppressWarnings("cast")添加到要转换该内容的方法之上。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22887218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档