我可以用JavaBean抛出异常吗

我可以用JavaBean抛出异常吗,java,exception,javabeans,propertychanged,Java,Exception,Javabeans,Propertychanged,我想通知class1,例外情况是可以或不能更改变量。我试图在propertyChange中加入一个异常,但是我不能使用这个方法。我怎样才能通知1班 类别1-> public void setProperty(int var) { if(var > 0){ propertySupport.firePropertyChange("var", this.var,var); this.var = var; }else{ System.out.print

我想通知class1,例外情况是可以或不能更改变量。我试图在propertyChange中加入一个异常,但是我不能使用这个方法。我怎样才能通知1班

类别1->

public void setProperty(int var) {
    if(var > 0){
    propertySupport.firePropertyChange("var", this.var,var);
    this.var = var;
    }else{
       System.out.println("bla bla"); 
    }
}

//methods
public void addPropertyChangeListener(PropertyChangeListener listener) {
    propertySupport.addPropertyChangeListener(listener);
}

public void removePropertyChangeListener(PropertyChangeListener listener) {
    propertySupport.removePropertyChangeListener(listener);
}
类别2->

@Override
public void propertyChange(PropertyChangeEvent evt){
    if(evt.getNewValue().equals("var"))
       //TODO
    }else{
       //throw exception to not change var in class1
    }

您需要使用
VetoableChangeListener

见:

公共接口VetoableChangeListener扩展了EventListener

每当bean更改 “受限”属性。您可以向注册VetoableChangeListener 源bean,以便通知任何受约束的属性 更新

作废vetoableChange(PropertyChangeEvent evt) 抛出PropertyVetoException

更改受约束的属性时,将调用此方法

参数: evt—描述事件源和已更改属性的PropertyChangeEvent对象。抛出: PropertyVetoException-如果收件人希望回滚属性更改


FirePropertyChange会告诉我更改我感兴趣使用的变量或属性。您应该验证是否在同一“setProperty”方法中更改变量,然后通知类2该值已更改

第一类

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"); 
}
}

类别2

@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
}

if(evt.getNewValue()=“var”)
???不,不要将字符串与
==
进行比较,因为这会比较引用,这不是您想要做的。请改用
.equals(…)
方法。属性更改不应用于传递异常。它仅用于通知状态的更改,而不用于其他用途。听力类如何响应状态的变化取决于它。那么,我如何通知class1不要改变var呢?