博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java反射-reflect
阅读量:4493 次
发布时间:2019-06-08

本文共 1732 字,大约阅读时间需要 5 分钟。

获取类的class文件对象的三种方式

Test.java -> Test.class(编译器编译) -> 在内存中运行(类加载器) -> 字节码对象(Class对象)

一个java文件 在内存中只有一个class文件对象

/** 对象获取* 类名获取* Class类的静态方法获取*/public class ReflectTest {
public static void main(String[] args)throws ClassNotFoundException {
//对象获取 Test test= new Test(); //调用Test类的父类的方法 getClass Class c1 = p.getClass(); System.out.println(c1); //类名获取 //所有类型 基本和引用 都有静态的属性 属性名字class Class c2 = Test.class; System.out.println(c2); //Class类的静态方法获取 forName(字符串的类名)包名.类名 Class c3 = Class.forName("Test"); System.out.println(c3); }}

Java反射 动态运行

/** 准备配置文件 键值对* IO流读取配置文件 Reader* 文件中的键值对存储到集合中 Properties* 集合保存的键值对 就是类名和方法名* 反射获取指定类的class文件对象* class文件对象,获取指定的方法*/public class Test {
public static void main(String[] args) throws Exception{
//IO流读取配置文件 FileReader r = new FileReader("config.properties"); //创建集合对象 Properties pro = new Properties(); //调用集合方法load 传递流对象 pro.load(r); r.close(); //通过键获取值 String className = pro.getProperty("className"); String methodName = pro.getProperty("methodName"); //反射获取指定类的class文件对象 Class c = Class.forName(className); //创建对象 Object obj = c.newInstance(); //获取指定的方法名 Method method = c.getMethod(methodName); //运行获得的此方法 method.invoke(obj); }}
// reflect api 拥有可以获取private成员变量和private的函数的方法 但并不建议使用	getName() 获得类的完整名字	getFields() 获得类的public类型的属性	getDeclaredFields() 获得类的所有属性 包括private 声明的和继承类	getMethods() 获得类的public类型的方法	getDeclaredMethods() 获得类的所有方法 包括private 声明的和继承类	getMethod(String name, Class[] parameterTypes) 获得类的特定方法		name参数指定方法的名字 parameterTypes 参数指定方法的参数类型	getConstructors() 获得类的public类型的构造方法	getConstructor(Class[] parameterTypes) 获得类的特定构造方法		parameterTypes 参数指定构造方法的参数类型	newInstance() 通过类的不带参数的构造方法创建这个类的一个对象

转载于:https://www.cnblogs.com/setlilei/p/10629493.html

你可能感兴趣的文章
css颜色代码大全
查看>>
物理系统(二)
查看>>
css3中-moz、-ms、-webkit与盒子模型
查看>>
DataTable 整行为空时,去除空行,常用于Excel导入,转换为DataTable时出现
查看>>
网络相关面试题1
查看>>
一种让谷歌搜索引擎拒绝搜索的字符串
查看>>
实现毛玻璃效果
查看>>
[BZOJ4082][Wf2014]Surveillance[倍增]
查看>>
kill -9杀掉nginx主进程、reload失败解决办法
查看>>
objdump 用法
查看>>
前端js模糊搜索(模糊查询)
查看>>
Chrome的hack写法以及CSS的支持程度图示
查看>>
苹果端手机微信页面长按图片无法保存的解决方案
查看>>
C# 调用Dll 传递字符串指针参(转)
查看>>
Android开发最佳学习路线图(转)
查看>>
iOS 常用四种数据存储方式
查看>>
System.Web.Routing入门及进阶 下篇
查看>>
试着用java实现DNS(一)——DatagramSocket, DatagramPacket, Message
查看>>
UINavigationItem UINavigationBar 关系分析
查看>>
Django简介
查看>>