java实现监听某一个参数改变的逻辑 简单示例代码
时间: 2023-08-04 21:02:53 浏览: 46
以下是一个简单的示例代码,演示如何使用Java的PropertyChangeListener接口和PropertyChangeSupport类监听某一个参数的变化。
```java
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
public class Main {
public static void main(String[] args) {
Person person = new Person("Tom", 20);
// 创建一个PropertyChangeSupport对象并将其绑定到person对象上
PropertyChangeSupport support = new PropertyChangeSupport(person);
// 创建一个PropertyChangeListener对象,并在其propertyChange方法中处理参数变化事件
PropertyChangeListener listener = new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
System.out.println("Property " + evt.getPropertyName() + " changed from " + evt.getOldValue() + " to " + evt.getNewValue());
}
};
// 将listener对象注册到support对象中
support.addPropertyChangeListener(listener);
// 设置person对象的age参数,触发变化事件
person.setAge(30);
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
int oldAge = this.age;
this.age = age;
// 调用PropertyChangeSupport对象的firePropertyChange方法,触发变化事件
firePropertyChange("age", oldAge, age);
}
// 定义一个名为"propertyChangeSupport"的PropertyChangeSupport对象,并提供getter方法
private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
public void addPropertyChangeListener(PropertyChangeListener listener) {
propertyChangeSupport.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
propertyChangeSupport.removePropertyChangeListener(listener);
}
public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
}
}
```
运行结果为:
```
Property age changed from 20 to 30
```