gpt4 book ai didi

java - 为什么 Java 允许在旧值和新值都为 null 时触发属性更改

转载 作者:行者123 更新时间:2023-11-30 06:40:43 26 4
gpt4 key购买 nike

PropertyChangeSupport 类在两个值(旧值和新值)都为空时触发 PropertyChangeEvent。有人可以向我解释这种行为的原因是什么吗?我的一些同事将此行为用于事件驱动的操作,但我认为这是对属性更改模式的滥用。我是对的还是我误解了什么?

我的意思是这行代码:

propertyChangeSupport.firePropertyChange(XY_PROPERTY, null, null);

最佳答案

我认为,这是一个哲学问题——null 不是一个“正常”值,null 表示“未知”,而“未知”不能与另一个“未知”进行比较,所以如果将属性值从“未知”到“未知”,这是一个新的“未知”值。在数据库中也是如此——NULL 总是不等于 NULL。

来自 Bean 规范:“如果不知道旧值和新值的真实值,则可以为它们提供空值。”

Bean 规范中的另一个原因:“事件源可能会发送一个空对象作为名称,以指示任意一组属性是否已更改。在这种情况下,旧值和新值也应该为空。”

有关更多详细信息,您可以查看 2002 年开放的 jdk 问题 4763463:( https://bugs.openjdk.java.net/browse/JDK-4763463 )

我认为,这对于开发来说不是很舒服,但确实如此。我们不能改变它:-(

关于java - 为什么 Java 允许在旧值和新值都为 null 时触发属性更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57324291/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com