JAVA反射机制可以从Class反射对象中获取构造函数,成员变量,方法类等类元素的反射对象,绕开语言访问检查可访问private的变量,同时可以在程序运行时对对象进行修改。反射技术是框架的核心基础技术之一。
package com.song.reflect;
public class PrivateCar {
public PrivateCar(String color){
this.color = color;
System.out.println("调用了我的构造器,将color设置为:"+color);
}
private String color;
protected void drive(){
System.out.println("drive private car! the color is "+color);
}
}
package com.song.reflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class PrivateCarReflect {
public static void main(String[] args) throws Exception {
//得到类加载器
ClassLoader loader = Thread.currentThread().getContextClassLoader();
//通过全额限定名得到类反射的实例
Class clazz = loader.loadClass("com.song.reflect.PrivateCar");
//得到构造器
Constructor cons = clazz.getDeclaredConstructor(String.class);
//通过构造器实例化pcar
PrivateCar pcar = (PrivateCar)cons.newInstance("黑色");
//通过反射的实例得到要访问的private变量
//Field colorFld = clazz.getField("color"); 不能使用该方法
Field colorFld = clazz.getDeclaredField("color");
//更改访问属性
colorFld.setAccessible(true);
colorFld.set(pcar, "红色");
//通过反射的实例得到要访问的private方法
Method driveMtd = clazz.getDeclaredMethod("drive", null);
driveMtd.setAccessible(true);
//执行,第一个参数为要执行该方法的对象名,第二个参数为参数列表
driveMtd.invoke(pcar, null);
}
}
Constructor :类的构造函数反射。通过Class.getConstructors()可以获得类的所有构造函数反射对象数组。还可以通过getConstructor(Class...parameterTypes)获取拥有特定入参的构造函数反射对象。通过newInstance(Object...initargs)创建一个对象的实例。
Method:类方法的反射类,通过Class.getDeclaredMethods()方法可以获取类的所有方法反射类对象数组
Method[],还可以通过getDeclaredMethod(String name,Class...parameterTypes)获取特定签名的方法,name为方法名,Class...为入参列表。 getReturnType()获取返回值类型, getParameterTypes()获取方法的入参类型数组, getExceptionType()获取方法的异常类型, getParameterAnnotations()获取方法的注释信息。
Field:类的成员变量的反射类。通过Class.getDeclareeFields()方法获取类成员变量反射对象数组,通过getDeclareField(String name)获取特定名称的成员变量反射对象。最主要方法有set(Object obj,Object value),obj为操作的目标对象,value为设定的值。还有类似setInt(Object obj,int value)这样带类型的设置方法。
分享到:
相关推荐
浅谈java代理机制 .txt 浅谈java代理机制 .txt
浅谈Java中Mysql数据库的连接与操作.pdf
注意力机制浅谈注意力机制及其作用浅谈注意力机制及其作用浅谈注意力机制及其作用浅谈注意力机制及其作用浅谈注意力机制及其作用浅谈注意力机制及其作用浅谈注意力机制及其作用浅谈注意力机制及其作用浅谈注意力机制...
浅谈Java优势,关于java优势......
【ASP.NET编程知识】浅谈.NET反射机制的性能优化 附实例下载.docx
浅谈JAVA垃圾回收机制.pdf
浅谈Java软件测试.pdf
·拒绝晦涩难懂的呆板教学,宋老师语言生动幽默,举例形象生动深入浅出,迅速让你把握问题本质,四两拨千斤 2.课程内容推陈出新: ·基于JDK 11,将Java8、Java9、Java10、Java11新特性一网打尽 ·课程中,Eclipse...
Java反射技术浅谈
浅谈Java的多线程机制.pdf
浅谈java中的几种随机数,浅谈java中的几种随机数,浅谈java中的几种随机数,浅谈java中的几种随机数
Java 对多线程的支持与同步机制深受大家的喜爱,似乎看起来使用了synchronized 关键 字就可以轻松地解决多线程共享数据同步问题。到底如何?――还得对synchronized 关键字 的作用进行深入了解才可定论。 总的说来,...
浅谈Java串行端口技术协议 浅谈JAVA串行端口技术协议 1 一、串行通讯慨述 2 二、RS232通讯基础 2 三、常见的边线方式 2 四、小技巧:如何辨别TXD和RXD端口? 3 五、安装JAVA COMMUNICATIONS API 3 六、通讯前的准备...
1、到底什么叫反射 2、Class类的作用 3、Class类的实例化三种...Class类在一般的基本开发是不会有任何作用的,完全可以不会,但是,对于一些高端的开发框架,所有的基本的核心原理都在于反射机制的应用上。 8、代理模式
Java反射技术浅谈 (1)
浅谈Java的输入输出流.pdf 浅谈Java的输入输出流.pdf
Java分布式应用学习笔记06浅谈并发加锁机制分析
java垃圾回收机制,很详细的解释了垃圾回收机制是如何运作的,对知识做一个充分的解释
浅谈Java程序员的存储过程.doc 浅谈Java程序员的存储过程.doc浅谈Java程序员的存储过程.doc
浅谈Java的输入输出流