javabean之Constrained属性
来源:互联网 发布:淘宝直播间在哪 编辑:程序博客网 时间:2024/05/01 21:04
一个JavaBean的constrained属性,是指当这个属性的值要发生变化时,与这个属性已建立了某种连接的其它Java对象可否决属性值的改变。constrained属性的监听者通过抛出PropertyVetoException来阻止该属性值 的改变。
测试代码:
package com.beans;import java.beans.PropertyChangeEvent;import java.beans.PropertyChangeListener;import java.beans.PropertyChangeSupport;import java.beans.PropertyVetoException;import java.beans.VetoableChangeListener;import java.beans.VetoableChangeSupport;import java.util.HashSet;import java.util.Random;import java.util.Set;import junit.framework.TestCase;import static java.lang.System.out;import static java.lang.System.err;public class TestVetoableChange extends TestCase {public void testVetoableChange() {User user = new User();UserListener listener = new UserListener();user.addVetoableChangeListener(listener);user.addPropertyChangeListener(listener);Random random = new Random();for (int i = 0; i < 10; i++) {try {user.setNumber(random.nextInt(10));} catch (PropertyVetoException e) {err.println(e.getMessage());}}}static class User {private int number;private VetoableChangeSupport vetoableChangeSupport = new VetoableChangeSupport(this);private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);public int getNumber() {return number;}public void setNumber(int number) throws PropertyVetoException {vetoableChangeSupport.fireVetoableChange("number", this.number, number);propertyChangeSupport.firePropertyChange("number", this.number, number);this.number = number;}public void addVetoableChangeListener(VetoableChangeListener listener) {vetoableChangeSupport.addVetoableChangeListener(listener);}public void removeVetoableChangeListener(VetoableChangeListener listener) {vetoableChangeSupport.removeVetoableChangeListener(listener);}public void addPropertyChangeListener(PropertyChangeListener listener) {propertyChangeSupport.addPropertyChangeListener(listener);}public void removePropertyChangeListener(PropertyChangeListener listener) {propertyChangeSupport.removePropertyChangeListener(listener);}}static class UserListener implements VetoableChangeListener, PropertyChangeListener {private Set<Integer> numberSet = new HashSet<Integer>();@Overridepublic void vetoableChange(PropertyChangeEvent evt)throws PropertyVetoException {if (numberSet.contains(evt.getNewValue())) {throw new PropertyVetoException("contains", evt);}numberSet.add((Integer) evt.getNewValue());out.println(evt.getNewValue());}@Overridepublic void propertyChange(PropertyChangeEvent evt) {out.println(evt.getOldValue() + "->" + evt.getNewValue());}}}
如果包含某个数字,就抛异常。
0 0
- javabean之Constrained属性
- JavaBean的属性(Simple,Indexed,Bound,Constrained)
- JavaBean的属性(Simple,Indexed,Bound,Constrained)
- javabean之bound属性
- hibernate constrained属性
- hibernate constrained属性
- hibernate constrained属性
- hibernate constrained属性
- hibernate之constrained详解
- hibernate之constrained详解
- hibernate之constrained详解
- hibernate constrained属性的作用
- JavaBean 初步(二) 之 JavaBean 的属性
- springMvc 之 【javaBean读取属性配置文件中的值】---注解方式
- Java中的List<JavaBean>以javabean中的某一属性排序之Collections.sort方法
- JavaBean的属性
- JavaBean 设置关联属性
- JavaBean的属性
- 用PhotoShop快速给证件照排版
- 有了网站 需要推广啊,本人收集了大量资源 奉献出来
- Linux Shell常用技巧(二)
- MySql表空间的概念
- WCF调用
- javabean之Constrained属性
- 线上团队项目管理工具
- UVA10051 Tower of Cubes
- bootrom&vxworks下ftp的使用
- OCP-1Z0-053-V13.02-638题
- javascript sort
- 虚拟机(VMware)中windows2003系统服务器的IE无法打开搜索网页
- OCP-1Z0-053-200题-61题-638
- OJ 调试技巧:VS2010 中 通过设置编译参数定义宏,无需修改源文件重定向标准输入输出