反射机制 中的Method,Field 在private模式下怎么调用(enforce java language check 压制java语言检查)
2012-04-05 14:02
676 查看
代码1 method方法
代码2 field方法
method与field 都是先生成class 对象,然后使用method或者field的getDeclaredMethod ,getDeclaredField ,然后method使用invoke ,field使用set添加对象
setAccessible
package com.david6; public class PrivateTest { private String sayhello(String a) { return "hello " + a; } } package com.david6; import java.lang.reflect.Method; public class TestPrivate { public static void main(String[] args) throws Exception { PrivateTest p = new PrivateTest(); //创建class对象 Class<?> classtype = p.getClass(); //使用method方法调用具体的sayhello方法,后面跟着new class[]{String.class} Method method = classtype.getDeclaredMethod("sayhello" ,new Class[]{String.class}); //压制java语言的检查,setAccessible;true 表示压制,false表示不压制 method.setAccessible(true); //通过invoke向P中下写入Object对象zhangsan String str= (String)method.invoke(p,new Object[]{"zhangsan"}); System.out.println(str); } }
代码2 field方法
package com.david6; public class Private2 { private String name = "lisi"; public String namet() { return name; } } package com.david6; import java.lang.reflect.Field; public class Private2Test { public static void main(String[] args) throws Exception { Private2 p = new Private2(); Class<?> classtype = p.getClass(); Field field = classtype.getDeclaredField("name"); field.setAccessible(true); //压制java的访问控制 field.set(p,"lisi"); //使用set方法对p加入中的name变更 System.out.println(p.namet()); // } }
method与field 都是先生成class 对象,然后使用method或者field的getDeclaredMethod ,getDeclaredField ,然后method使用invoke ,field使用set添加对象
setAccessible
相关文章推荐
- 本地模式下(local),java连接spark调用scala语言打成的jar包
- [转]Java 语言的 XML 验证 API---检查文档是否符合模式
- Java 单例模式中使用双重检查(Double-Check)
- Java 语言的 XML 验证 API-检查文档是否符合模式
- java中的双重检查模式(double-check idiom)
- JAVA菜鸟入门(15) static method/ field与normal method/field的相互调用关系
- 黑马程序员_java语言_多线程和设计模式
- Java 拓展之调用其他语言
- Java设计模式 Design Pattern:模板方法 Template Method
- java调用脚本语言笔记(jython,jruby,groovy)
- java设计模式之一工厂模式(Factory Method)
- 阎宏:Java语言简单工厂创立性模式介绍
- Java设计模式---工厂方法模式(Factory-Method)
- 使用java语言,利用多线程调用WebService进行数据处理
- 【设计模式】C++单例模式的几种写法——Java自动加载内部类对象,C++怎么破?
- Java与模式 模版方法模式 Template Method
- Java Remote Method Invocation(Java远程方法调用)
- 在Java中应用设计模式 - Factory Method《转载》
- 设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 工厂模式(FactoryMethod) - Java实现
- Java跨语言调用实现方案