javaSe-反射3

package com.java.chap07.sec04;

public class Student {

private String name;
private Integer age;


public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}

public void say(){
System.out.println("我的姓名:"+name);
}

@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}

 

 

package com.java.chap07.sec04;

import java.lang.reflect.Method;

public class Test1 {

public static void main(String[] args) {
Class<?> c=null;
try {
c=Class.forName("com.java.chap07.sec04.Student");
System.out.println(c.getName());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Object obj=c.newInstance();//得到对象
Method m1=obj.getClass().getMethod("setName", String.class); // 通过反射获取方法
m1.invoke(obj, "小锋"); // 调用方法

Method m2=obj.getClass().getMethod("getName");
String name=(String) m2.invoke(obj);
System.out.println("name="+name);

Field nameField=c.getDeclaredField("name");//访问属性
nameField.setAccessible(true); // 设置可以访问 包括私有属性
nameField.set(obj, "小明");//设置属性
System.out.println("name:"+nameField.get(obj));

 


} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

 

posted @ 2017-03-01 10:08  小拽A  阅读(112)  评论(0编辑  收藏  举报