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

时间:2014-06-10 10:05:42

标签: java awt

我无法在规格中找到答案或搜索它。有没有人看到这是空的?我可以在不检查null的情况下使用属性吗?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

没有标准的AWT类覆盖这些方法(据我所见)。

理论上,有人可以继承AWT组件类并覆盖getBounds()以返回null,但那将是......反常。


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


我不赞同你应该在每个可能的地方防范NPE的理论。让它们发生并修复它们会更好。另一方面,如果具有明确的含义,您应该只允许状态值为null。避免将事物视为“优化”的情况,或者因为您忘记初始化它们。并编写好的单元测试,以便及早发现错误。