Java 中反射的机制与原理(以及相关示例代码)

news/2024/5/19 3:02:04 标签: 反射, java

类的对象:基于某个类new出来的对象,也成为实例对象
类对象:类加载的产物,里面存储了类的对象的所有信息(包名/类名/父类/接口/属性)

获取类对象

1.类名.class

java">Class c1 = ArrayList.class;

2.通过getClass()方法

java">ArrayList list = new ArrayList();
Class c2 = list.getClass();

3.Class.forName(类的全限定名)

java">Class c3 = Class.forName("java.util.ArrayList");

常用方法:
getInterfaces(); 获取类实现的所有接口
getSuperClass(); 获取父类对象的类对象
getDeclaredFields(); 获取所有的属性
getFields(); 获取所有公开属性
getDeclaredMethods(); 获取所有的方法
getMethods(); 获取公开方法
getConstructors(): 获取所有的构造方法

访问方法对象
invoke(Obkect o): 执行当前Method对象代表的方法
setAccessible(true): 设置当前Method对象代表的方法,可以访问

java">Class c =Class.forName("全类名")
Object o = c.newInstance();

//获取m1方法
Method m1 = c.getDeclaredMethod("m1");
m1.invoke(o);

Method m2=c.getDeclaredMethod("m2",int.class,String.class);
m2
m2.setAccessible(true);
m2.invoke(o,5,"abc");

http://www.niftyadmin.cn/n/1855016.html

相关文章

32-linux任务调度定时备份mysql数据库和文件夹

定时调度备份mysql数据库中的数据实现步骤如下: 在SSH Secure中进行操作 1.在usr目录下面新建bakscript文件夹,来保存任务调度命令文件.sh mkdir bakscript 2.在usr目录下面新建bak文件夹,用来保存sql文件和其他文件 mkdir bak 3.打开bakscript文件…

java中的设计模式(单例模式,工厂设计模式)

单例模式 一个类只允许产生一个对象 //1.饿汉式 class ClassA{private static final ClassA ca new ClassA();private ClassA(){}private static ClassA getInstance(){return ca;} }//2.懒汉式 class ClassB{private static ClassB cb null;private ClassB(){}public stati…

MapReduce编程框架的核心实现思想

Yran: 1.任务(Job)的监控 AM applicationMaster 2.管理集群中的资源(CPU 内存 网络 IO) Yarn汇总集群中所有物理机器的资源(CPU 内存 网络) 根据不同Job作业的需要按需分配给每一个job作业&…

04-linux中svn的安装

因为自己写了一个小小的项目,在工作至于想要在公司进行开发,老是把代码复制过来复制过去,很不方便,所以研究了一下linux中的svn安装。 我使用的是阿里云的服务器,所以可以远程上传到阿里云的服务器上面。 环境说明&am…

jdbc的作用以及它的几个步骤

JDBC是一种特殊的数据库客户端应用(确切的说是连接数据库技术),其作用和其他数据库客户端应用类似(除了客户端所有功能外,还具有自己的特点),是连接数据库,使用数据库服务器提供的服…

CTF中常见注入题源码及脚本分析

1.代码审计发现 这里没有用escape_string,因此存在注入。 1 function show($username){2 global $conn;3 $sql "select role from user where username ".$username."";4 $res $conn ->query($sql);5 if($res->num_rows>0){6 echo &q…

27-SVN commit error: “'.' is not a working copy”

Make sure your working copy is not in the drive root but at least one folder below the drive root.