我已经实现了这个功能:
static <X,Y> Y castOrNull(X obj) { try { return (Y)obj; } catch(ClassCastException e) { return null; } }
这给了我编译器警告:
Type safety: Unchecked cast from X to Y
我不太明白.我在这里做的尝试/捕获不是检查吗?我可以忽略这个警告吗?
我的功能是否会按预期工作?我该如何正确实现它?
我也尝试使用y检查的obj实例,但由于Java处理泛型的方式,这不起作用.
顺便说一句,这个函数对我来说似乎非常有用(使其他代码更干净).我想知道Java中是否已存在这样的函数?
我想要使用它的一个例子:
void removeEmptyRawStrings() { for(Iterator<Entity> e = entities.iterator(); e.hasNext();) { RawString s = castOrNull(e.next()); if(s != null && s.content.isEmpty()) e.remove(); } }
我的代码中经常出现类似这样的情况.我认为这比其他任何东西都更具可读性和简单性.但是,如果你有任何关于如何使代码更简单的话,请给我一个更好的建议.
解决方法
原文地址:https://www.jb51.cc/java/127288.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。