同样还是关于javaBean的 在使用Beanutils工具包中产生了问题
- import java.beans.IntrospectionException;
- import java.beans.PropertyDescriptor;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- import org.apache.commons.beanutils.BeanUtils;
- public class IntroDemo {
-
- public static void main(String[] args) throws Exception{
- // TODO Auto-generated method stub
- Reflectpot rfp1 = new Reflectpot(3,5);
- //这里获得x的属性 直接是获取不到的 我们可以先定义属性名
- String proName ="x";
- // 这里有个思路是 x ---X 看第二个是否小写 转换完之后---getX---通过反射的方式method getX
- //这里引入javaBean的一个类是 PropertyDescriptor 属性描述
- Object renVal = getPro(rfp1, proName);
- System.out.println(renVal);//取出值
- Object val =7;
- PropertyDescriptor pd2 = new PropertyDescriptor(proName,rfp1.getClass());
-
- setPro(rfp1, pd2, val);
- System.out.println(BeanUtils.getProperty(rfp1, "x"));//第一个选择对象 第二个选择值
-
- System.out.println(rfp1.getX());//打印我们刚才修改的
- }
- private static void setPro(Object rfp1, PropertyDescriptor pd2,
- Object val) throws IllegalAccessException,
- InvocationTargetException {
- Method setX = pd2.getWriteMethod();//得到X的属性的写方法
- // 有了这个方法 我们就可以用invoke在对象身上调用
- setX.invoke(rfp1,val);//这里就不需要返回值
- }
-
-
- private static Object getPro(Object rfp1, String proName)
- throws IntrospectionException, IllegalAccessException,
- InvocationTargetException {
- PropertyDescriptor pd = new PropertyDescriptor(proName,rfp1.getClass());
- //得到javaBean的属性 我们就能得到javaBean的get 和set方法
- Method getX = pd.getReadMethod();//得到X的属性的读方法
- // 有了这个方法 我们就可以用invoke在对象身上调用
- getX.invoke(rfp1);
- return pd;
- }
- }
- class Reflectpot{//创建一个类 生成set和getX Y方法
- public int x;
- public int y;
- public int getX() {
- return x;
- }
- public void setX(int x) {
- this.x = x;
- }
- public int getY() {
- return y;
- }
- public void setY(int y) {
- this.y = y;
- }
- public String s1 ="ball";//新加两个成员变量
- public String s2 ="car";
- Reflectpot(int x ,int y){
- super();
- this.x=x;
- this.y=y;
- }
- public String toString(){
-
- return s1+"::"+s2;
- }
- }
复制代码
这个还是我原来的内省javaBean代码
配置buildpath也没有问题 配置文件我也有了
运行的时候 却报了一个
Exception in thread "main" java.lang.NoSuchMethodException: Property 'x' has no getter method
找不到getX方法的异常 可是我明明都有getX啊 怎么会找不到 求助大神
|