利用java的反射机制调用类的私有方法及私有属性
2011-11-16 21:43
846 查看
大家都知道java类中被声明private的方法和private的属性,在其他类中是无法访问的,但是我们可以利用java给我提供的反射机制就可以实现对私有方法和私有属性的访问。废话不多说,直接上代码
package reflection; import java.lang.reflect.Field; import java.lang.reflect.Method; /* * 该类主要练习使用java的反射机制调用其他类的 * private方法和变量; */ public class MethodTest { public static void main(String[] args) throws Exception { Class<?> classType = People.class; People p1 =(People) classType.newInstance(); // 获取指定的方法,调用People类的私有方法; Method method = classType.getDeclaredMethod("sayHello", new Class[] { String.class }); method.setAccessible(true);//压制java的访问修饰符; method.invoke(p1, new Object[]{"Mr zhou"}); //获取People类的私有属性; Field field = classType.getDeclaredField("age"); field.setAccessible(true); field.set(p1, 12); System.out.println(field.get(p1)); } } class People { private int age; private String name; 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; } private void sayHello(String str) { System.out.println("Hello: " + str); } }
People类中声明的sayHello方法和age、name都是私有的,但是,我们通过反射机制就可以调用该方法和使用其属性。
相关文章推荐
- Java记录 -88- 利用反射机制调用对象的私有方法和属性
- Java记录 -88- 利用反射机制调用对象的私有方法和属性
- Java反射学习总结二(用反射调用对象的私有属性和方法)
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- java利用反射来调用一个类的私有方法
- java 反射机制调用私有构造方法并执行类内方法
- Java反射高级应用--利用反射调用类的私有方法修改私有方法值,以及替换Java的类成员数据
- 关于java的反射,调用私有方法(有参数私有方法),私有属性
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- java利用反射访问类的私有(private)属性及方法
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- 利用反射调用私有方法、访问私有属性
- Java反射高级应用--利用反射调用类的私有方法修改私有方法值,以及替换Java的类成员数据
- java利用反射访问类的私有(private)属性及方法
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- Java反射高级应用--利用反射调用类的私有方法修改私有方法值,以及替换Java的类成员数据
- Java通过反射调用其他类的私有属性和私有方法
- java反射调用私有方法和修改私有属性
- java 反射调用 私有构造类中 private static final 属性的方法
- 利用反射对私有属性/方法进行设置/调用(转自己贴)