java反射例子

来源:互联网 发布:确保成本测算数据准确 编辑:程序博客网 时间:2024/06/08 17:50

包括有构造函数和无构造函数的例子


无构造函数的实体类:

package reflect;/** * 无构造函数 * @author LD * */public class Man {private String name;private int age;//获取用户信息public void getUserInfo(){System.out.println("name:"+name+",age:"+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;}}



有构造函数的实体类:

package reflect;/** * 有构造函数 * @author LD * */public class Woman {private String name;private int age;public Woman(String name, int age){this.name = name;this.age = age;}//获取用户信息public void getUserInfo(){System.out.println("name:"+name+",age:"+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;}}


测试类:
package reflect;import java.lang.reflect.Constructor;/** * 测试类 * @author LD * */public class ReflectTest {public static void main(String[] args) throws Exception {//正常调用无构造函数Man p = new Man();p.setName("Peter");p.setAge(20);p.getUserInfo();//正常调用有构造函数Woman women = new Woman("Alice", 18);women.getUserInfo();//使用反射调用无构造函数类的方法Class<?> clazz = Class.forName("reflect.Man");Man man = (Man)clazz.newInstance();man.setName("Fly");man.setAge(21);man.getUserInfo();//使用反射调用有构造函数类的方法Class<?> clazz2 = Class.forName("reflect.Woman");Constructor<?> constructor = clazz2.getConstructor(String.class, int.class);Woman woman = (Woman)constructor.newInstance("Kate",19);woman.getUserInfo();}}


结果:

name:Peter,age:20
name:Alice,age:18
name:Fly,age:21
name:Kate,age:19