JAVA.BEANS 包

本文介绍如何使用Java Beans实现属性变更的监听机制,包括VetoableChangeListener和PropertyChangeListener的使用,以及通过Introspector获取Bean的属性描述符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

property类和listener类,vetoable change event类和listener类在应用程序运行时被bean调用,用于建立用户接口,bean的descriptor 可通过bean-infos和introspection得到,

 

Basic.java

package chapter1;

import java.beans.PropertyChangeListener;

import java.beans.PropertyChangeSupport;

import java.beans.PropertyVetoException;

import java.beans.VetoableChangeListener;

import java.beans.VetoableChangeSupport;

import java.io.Serializable;

public class BasicBean {

   boolean property;

   int myProperty; 

 

   public int getMyProperty()

   {

  return myProperty;

   }

 

   public void setMyProperty(int newValue) throws PropertyVetoException

   {try{

   int oldValue=myProperty;

   myProperty=newValue;

   pceListeners.fireVetoableChange("myProperty",new Integer(oldValue),new Integer(newValue));

      }catch(PropertyVetoException e){

      throw e;

      }

   }

 

   //Create the listener list

   VetoableChangeSupport pceListeners= new VetoableChangeSupport(this);

 

   //The listener wrapper list

   public synchronized void addVetoPropertyChangeListener(VetoableChangeListener listener)

   {

  pceListeners.addVetoableChangeListener(listener);

   }

 

   public synchronized void removeVetoPropertyChangeListener(VetoableChangeListener listener)

   {

  pceListeners.removeVetoableChangeListener(listener);

   }

 

 

   public BasicBean()

   {

   }

   public boolean getProperty()

   {

  return property;

   }

   public boolean isProperty()

   {

  return property;

   }

   public void setProperty(boolean newValue)

   {

   property=newValue;

   }

}

Instantiate.java
package chapter1;
import java.beans.BeanInfo;
import java.beans.Beans;
import java.beans.Expression;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.beans.Statement;
import java.io.IOException;
public class Instantiate {
public static void main(String[] args) 
{   Object o = new MyBean();
    try{
     Expression expr = new Expression(o,"getProp1",new Object[0]);
     expr.execute();
     String s =(String)expr.getValue();
     Statement stmt = new Statement(o,"setProp1",new Object[]{"new string"});
     stmt.execute();
        expr = new Expression(o,"getProp2",new Object[0]);
     expr.execute();
     int i =(Integer)expr.getValue();
        stmt = new Statement(o,"setProp2",new Object[]{new Integer(123)});
     stmt.execute();
     expr = new Expression(o,"getProp3",new Object[0]);
       expr.execute();
       int i =(Integer)expr.getValue();
          stmt = new Statement(o,"setProp3",new Object[]{new byte[]{0x12,0x23}});
       stmt.execute();
    }catch(Exception e){}
try
{
        BasicBean bean = (BasicBean)Beans.instantiate(ClassLoader.getSystemClassLoader(), "MyBeans");  
} catch(ClassNotFoundException e){
}catch(IOException e){}
try{
BeanInfo bi = Introspector.getBeanInfo(MyBean.class);
PropertyDescriptor[] pds=bi.getPropertyDescriptors();
for(int i=0;i<pds.length;i++)
{
String propName = pds[i].getName();
}
}
}
}
MyBean.java
package chapter1;
public class MyBean {
String prop1;
int prop2;
public String getProp1(){
return prop1;
}
public void setProp1(String s){
prop1=s;
}
public int getProp2(){
     return prop2;
}
public void setProp2(int i){
   prop2=i;
}
byte[] prop3;
public byte[] getProp3(){
return prop3;
}
public void setPROP3(byte[] bytes){
prop3=bytes;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值