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

java反射的总结

2014-06-13 13:40 197 查看
Student类:

package com.blank.test;

public class Student {
private int age;
private String name;

public Student(int age, String name) {
super();
this.age = age;
this.name = name;
}

public Student() {

}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public static void hi(int age, String name) {
System.out.println("大家好,我叫" + name + ",今年" + age + "岁");
}

public String toString() {
return "大家好,我叫" + name + ",今年" + age + "岁";
}
}


package com.blank.test;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class Test {

public static void main(String[] args) throws Exception {
Class cls = Class.forName("com.blank.test.Student");
// 生成实例化对象
Student s1 = (Student) cls.newInstance();// 新实例
// 对静态方法的调用
Method m1 = cls.getMethod("hi", int.class, String.class);// getDeclaredField是可以获取一个类的所有字段.getField只能获取类的public字段
m1.invoke(cls, 20, "b");// hi是静态方法可以不用实例化
// 对非静态方法的调用
Method m2 = cls.getDeclaredMethod("setName", String.class);
m2.invoke(cls.newInstance(), "c");// 不是静态方法,必须实例化
// 对private成员的访问
Field f1 = cls.getDeclaredField("name");
f1.setAccessible(true);// 设置允许访问
f1.set(s1, "f");
System.out.println(f1.get(s1));
}

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