繁体   English   中英

java.awt.Component.getBounds()可以为null吗?

[英]Can java.awt.Component.getBounds() be null?

我找不到规格或通过搜索找到答案。 有人看到这个为空吗? 我可以使用属性而不检查null吗?

getBounds()返回一个Rectangle对象。 据我所知,当您创建一个Component时,会创建一个Rectangle对象,因此该方法不会返回null。

这是因为当您创建一个组件(按钮,复选框,滚动条等)时,此类对象将始终具有Rectangle对象形式的边界。

如果您正在谈论当前的AWT的Oracle / OpenJDK实现,那么Component.getBounds()不能返回null,因为它总是创建一个新的Rectangle对象。 源代码在这里

标准的AWT类都没有覆盖方法(据我所知)。

从理论上讲,有人可以继承AWT组件类并重写getBounds()以返回null ,但这将是……不正确的。


我的建议是假设它不是非空的,并将任何(假设的)NPE视为错误。


我不同意您应该在所有可能的地方都防范NPE的理论。 最好让它们发生并修复它们。 不利的一面是,只有在状态值具有明确含义的情况下,才应将其设置为null 避免将事物作为“优化”可以为空或因为忘记初始化它们而导致的情况。 并编写良好的单元测试,以便您尽早发现错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM