黑马程序员技术交流社区
标题:
帮忙看下下面程序错到哪里?
[打印本页]
作者:
xuemeng
时间:
2013-5-23 11:02
标题:
帮忙看下下面程序错到哪里?
本帖最后由 xuemeng 于 2013-5-23 11:10 编辑
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
//操作bean的指定属性
class Demo {
public static void main(String[] args) throws ClassNotFoundException,
InstantiationException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException,
NoSuchFieldException, SecurityException, IntrospectionException {
test();
}
public static void test() throws ClassNotFoundException,
IntrospectionException, InstantiationException,
IllegalAccessException, IllegalArgumentException,
InvocationTargetException, NoSuchFieldException, SecurityException {
Class c = Class.forName("cn.itcast.demo.Person");
Object obj = c.newInstance();
// 创建一个属性描述起对象, 并与指定bean属性的名称关联
PropertyDescriptor pd = new PropertyDescriptor("age", c);
// 获取指定bean属性的set方法
Method m1 = pd.getWriteMethod();
// 设置age属性的值为25
m1.invoke(obj, 25);
// 获取属性对象
Field f = c.getField("age");
// 暴力访问
f.setAccessible(true);
// 获取该属性对应的值
int age = (int) f.get(obj);
System.out.println(age);
}
}
class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getA() {
return null;
}
晕, 原来方法用错了, 获取的是公共属性
作者:
画饼
时间:
2013-5-23 11:13
有错误提示要贴出来,一行一行找很慢的
作者:
画饼
时间:
2013-5-23 11:24
package com.luodi;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
//操作bean的指定属性
class Demo {
public static void main(String[] args) throws ClassNotFoundException,
InstantiationException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException,
NoSuchFieldException, SecurityException, IntrospectionException {
test();
}
public static void test() throws ClassNotFoundException,
IntrospectionException, InstantiationException,
IllegalAccessException, IllegalArgumentException,
InvocationTargetException, NoSuchFieldException, SecurityException {
Class c = Class.forName("com.luodi.Person");
Object obj = c.newInstance();
// 创建一个属性描述起对象, 并与指定bean属性的名称关联
PropertyDescriptor pd = new PropertyDescriptor("age", c);
// 获取指定bean属性的set方法
Method m1 = pd.getWriteMethod();
// 设置age属性的值为25
m1.invoke(obj, 25);
// 获取属性对象
Field f = c.getDeclaredField("age");
// 暴力访问
f.setAccessible(true);
// 获取该属性对应的值
int age =(Integer)f.get(obj);
System.out.println(age);
}
}
class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getA() {
return null;
}
}
作者:
画饼
时间:
2013-5-23 11:25
私有属性不能这么获取 c.getField()看我的那个方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2