我想通知class1,异常是否可以更改变量。我试图输入propertyChange来抛出异常,但我不能用这种方法。我怎样才能通知class1 ??
class1 - >
@Override
public void propertyChange(PropertyChangeEvent evt){
if(evt.getNewValue().equals("var"))
//TODO
}else{
//throw exception to not change var in class1
}
class2 - >
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
答案 0 :(得分:1)
您需要使用VetoableChangeListener
。
请参阅JavaDoc:
public interface VetoableChangeListener扩展了EventListener
每当bean更改时,都会触发VetoableChange事件 “受限制”的财产。您可以注册VetoableChangeListener 源bean,以便通知任何受约束的属性 更新。
void vetoableChange(PropertyChangeEvent evt) 抛出PropertyVetoException
当约束属性发生更改时,将调用此方法。
参数: evt - 描述事件源和已更改属性的PropertyChangeEvent对象。抛出: PropertyVetoException - 如果收件人希望回滚属性更改。
答案 1 :(得分:0)
FirePropertyChange会告诉我更改我有兴趣使用的变量或属性。您应该验证是否在同一个" setProperty"中更改变量。然后通知方法2该值已更改
的Class1
public void setProperty(int var) {
if(this.var != var && var > 0){
propertySupport.firePropertyChange("var", this.var,var);
this.var = var;
}else{
System.out.println("bla bla");
}
}
的Class2
@Override
public void propertyChange(PropertyChangeEvent evt){
if(evt.getPropertyName().equals("var")){
//I do something with this new variable
System.out.print(evt.getNewValue());
}else{
//throw exception to not change var in class1
}