java-如何注释我的辅助方法,以便Eclipse知道如果它返回true,则它的参数为非null?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-如何注释我的辅助方法,以便Eclipse知道如果它返回true,则它的参数为非null?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1573字,纯文字阅读大概需要3分钟。
内容图文
![java-如何注释我的辅助方法,以便Eclipse知道如果它返回true,则它的参数为非null?](/upload/InfoBanner/zyjiaocheng/667/c811af6212ce4370830ff99890cff11f.jpg)
我有一个辅助方法hasContent(String),如果其参数均为非null且包含至少一个非空白字符,则该方法返回true.我刚刚在Eclipse中启用了null分析,并且发现当我使用此方法执行代码块时,该代码块取决于我的helper函数的结果,该结果表明字符串具有内容(因此不能为null),但是Eclipse抱怨我的String可能仍然为null.
辅助功能
public static boolean hasContent(String text) {
if (text == null)
return false;
if (text.trim().length() == 0)
return false;
return true;
}
使用例
...
String dataString;
try {
dataString = readStringFromFile("somefile.txt");
} catch (IOException e) {
System.err.println("Failed to read file due to error: " + e);
dataString = null;
}
// At this point dataString may be null
if (hasContent(dataString)) {
// At this point dataString must be non-null, but Eclipse warns:
// "Potential null pointer access: The variable dataString may be null at this location"
// at the following reference to dataString
System.out.println("Read string length " + dataString.length());
}
...
在这种情况下,最佳做法是什么?如果可以避免,我不想抑制警告.我更愿意告诉Eclipse,如果hasContent()返回true,那么它的参数肯定是非null的.这可能吗?如果是这样,怎么办?
解决方法:
您的方法的约定是,如果hasContent返回true,则保证其参数为非null.
Eclipse至少在不更改代码和不降低其样式的情况下,无法在编译时表达或检查该合同.
Nullness Checker是另一种工具,可以在编译时表达和检查此合同.这样做不需要您更改代码.您只需在代码中添加@EnsuresNonNullIf批注:
@EnsuresNonNullIf(expression="#1", result=true)
public static boolean hasContent(String text) { ...
Nullness Checker随Checker Framework一起分发.
有一个Eclipse plugin,可让您在Eclipse中运行Nullness Checker.
内容总结
以上是互联网集市为您收集整理的java-如何注释我的辅助方法,以便Eclipse知道如果它返回true,则它的参数为非null?全部内容,希望文章能够帮你解决java-如何注释我的辅助方法,以便Eclipse知道如果它返回true,则它的参数为非null?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。