您的位置:首页 > 编程语言 > Java开发

Java 反射(属性) 相当暴力啊 暴力反射

2014-01-06 22:20 253 查看
数据bean:

package com.mth.bean;

public class Person {

private String name;
private int age;
public String city;

private Person(String name, int age) {
super();
this.name = name;
this.age = age;
}

public Person() {
super();

System.out.println("空参构造方法");
}

@Override
public String toString() {
return name + "......" + age + "......" + city;
}

}


测试类:

package com.mth.test;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;

import com.mth.bean.Person;

public class ReflectFiledDemo {

public static void main(String[] args) throws Exception {
Class clazz = Class.forName("com.mth.bean.Person");
System.out.println(clazz);
// 获取所有的成员属性 返回数组(public 修饰的)
Field[] fields = clazz.getFields();
for (Field field : fields) {
System.out.println(field);
}
System.out.println("=====================================");
// 获取一个field对象 公共的(public 修饰的)
Field f = clazz.getField("city");
System.out.println(f);
System.out.println("=====================================");
// 获取所有的成员变量 包括私有的属性
Field[] fields1 = clazz.getDeclaredFields();
for (Field field : fields1) {
System.out.println(field);
}
System.out.println("=====================================");
// 获取一个私有的属性
Field f1 = clazz.getDeclaredField("name");
System.out.println(f1);
System.out.println("=====================================");
// 建立一个对象
Class clazz1 = Class.forName("com.mth.bean.Person");
Constructor con = clazz1.getConstructor();
Person p = (Person) con.newInstance();
System.out.println(p);
// 获得私有属性name age;
Field ff1 = clazz.getDeclaredField("name");
Field ff2 = clazz.getDeclaredField("age");
Field ff3 = clazz.getField("city");
ff1.setAccessible(true);
ff1.set(p, "zs");
ff2.setAccessible(true);
ff2.setInt(p, 20);
ff3.set(p, "DL");
System.out.println("通过获得属性 得到的对象..." + p);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 反射