您的位置:首页 > 其它

反射(四)使用反射机制调用对象的私有方法及成员变量

2016-01-09 20:34 901 查看
package com.ygl.reflect;

public class Private {

private String sayName(String name){

return name;

}

}

//*****************************

package com.ygl.reflect;

import java.lang.reflect.Method;

public class Test11 {

public static void main(String[] args) throws Exception {

Private tt=new Private();

Class<?> clazz=tt.getClass();

//可以获得定义过的对象,也即可以获得私有的

Method method=clazz.getDeclaredMethod("sayName", new Class[]{String.class});

method.setAccessible(true);//压制java的默认访问控制的检查

String str = (String) method.invoke(tt, new Object[]{"ygl"});

System.out.println(str);

}

}

//========================================

package com.ygl.reflect;

public class Private {

private String name="yyy";

public String getName(){

return name;

}

}

//****************************************

package com.ygl.reflect;

import java.lang.reflect.Field;

public class Test12 {

public static void main(String[] args) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {

Private p=new Private();

Class<?> clazz=p.getClass();

Field field=clazz.getDeclaredField("name");

field.setAccessible(true);

field.set(p, "ygl");

System.out.println(p.getName());

}

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