我可以用JavaBean抛出异常吗
我想通知class1,例外情况是可以或不能更改变量。我试图在propertyChange中加入一个异常,但是我不能使用这个方法。我怎样才能通知1班 类别1->我可以用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
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呢?