java反射的总结

来源:互联网 发布:笔趣阁软件下载 编辑:程序博客网 时间:2024/05/18 02:55

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));}}


0 0
原创粉丝点击