我无法在规格中找到答案或搜索它。有没有人看到这是空的?我可以在不检查null的情况下使用属性吗?
答案 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
。避免将事物视为“优化”的情况,或者因为您忘记初始化它们。并编写好的单元测试,以便及早发现错误。