Java反射复习笔记
反射
获取反射的三种方式:
Class.forName(全类名):将字节码文件加载进内存,返回Class对象,全类名要加上类的包名,例top.linzeliang.example.RelfectTest(多用于配置文件,将类名定义在配置文件中,先读取文件,获取文件名,然后加载类)类名.class:通过类名的属性class获取(多用于参数传递)对象.getClass():用于对象获取字节码的方式
Class对象的功能
获取 成员变量/成员变量们
Field[] getFields():获取所有public修饰符修饰的变量,包括从父类继承来的字段,即protected、default、private无法被获取Field getField(String name):获取指定变量名称的public修饰符修饰的变量Field[] getDeclaredFields():获取所有的成员变量,不考虑修饰符(只要是成员变量就可以被获取)Filed getDeclaredField(String name):可以获取本类所有的字段,包括private的,但是不能获取继承来的字段。 ( 这里只能获取到private的字段,但并不能访问该private字段的值,除非加上setAccessible(true))
获取 成员方法/成员方法们
Method[] getMethods()Mathod getMethod(String name, 类<?>... parameterTypes)Method[] getDeclaredMethods()Method getDeclaredMethod(String name, 类<?>... parameterTypes)
获取构造方法们
Constructor<?>[] getConstructors()Constructor<T> getConstructor(类<?>... parameterTypes)Constructor<T> getDeclaredConstructor(类<?>... parameterTypes)Constructor<?>[] getDeclaredConstructors()
获取全类名
String getName()
Field:成员变量
void set(Object obj, Object value):设置值get(Object obj):获取值setAccessible(true):忽略访问权限修饰符的安全检查,即暴力反射
Method:成员方法
invoke(Object obj, Object args):执行方法String getName():获取方法名
Constructor:构造方法
newInstance(Object... initargs):创建对象- 如果使用空参构造器创建对象,则可以直接
Class对象.newInstance()
通过框架创建对象
public class Demo {
public static void main(String[] args) throws Exception {
//加载配置文件,配置文件路径要在src目录下
Properties pro = new Properties();
InputStream is = Demo.class.getClassLoader().getResourceAsStream("pro.properties");
pro.load(is);
//获取配置文件中的数据
String className = pro.getProperty("className");
//通过全类名将该类加载进入内存
Class c = Class.forName(className);
//创建对象
Object obj = c.newInstance();
System.out.println(obj);
}
}
public class ReflectTest {
public int a = 1;
protected int b = 2;
int c = 3;
private int d = 4;
public void m1() {
System.out.println("miaoa");
}
protected void m2() {
}
void m3() {
}
private void m4() {
}
}
Java反射复习笔记的更多相关文章
- Java基础复习笔记系列 九 网络编程
Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...
- Java基础复习笔记系列 八 多线程编程
Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...
- Java基础复习笔记系列 七 IO操作
Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...
- Java基础复习笔记系列 五 常用类
Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...
- Java基础复习笔记系列 四 数组
Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...
- Java基础复习笔记基本排序算法
Java基础复习笔记基本排序算法 1. 排序 排序是一个历来都是很多算法家热衷的领域,到现在还有很多数学家兼计算机专家还在研究.而排序是计算机程序开发中常用的一种操作.为何需要排序呢.我们在所有的系统 ...
- Java基础复习笔记系列 十三 反射机制
主题:Java反射机制 学习资料参考网址: 1.http://www.icoolxue.com 1.Java反射机制. 各种框架中都使用到了Java的反射机制. 两个类:java.lang.Class ...
- java反射学习笔记
1.java反射概念 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功 ...
- Java反射机制--笔记
1.认识Class类 任何一个类都是Class类的实例对象,这个实例对象有三种表示方式. /*java 反射机制*/ // 获取类的方法 UserDao userDao = new UserDao() ...
随机推荐
- 独立看第一个C++程序到最终结果log----2019-04-16
(如果一个人夸你,千万别相信,一个人真优秀是不需要说出来的,所以别人夸你的时候也是自己最松懈的时候,千万不能飘,只能说明自己不是很差而已,世界上优秀的人很多,一直优秀到最后的人却是凤毛菱角. 如果一个 ...
- 跟我一起学.NetCore之WebApi接口裸奔有风险(Jwt)
前言 撸码需谨慎,裸奔有风险.经常在一些技术交流群中了解到,还有很多小伙伴的项目中Api接口没有做任何安全机制验证,直接就裸奔了,对于一些临时项目或是个人小项目还好,其余的话,建议小伙伴们酌情考虑都加 ...
- CentOS之—双网卡双IP双网关配置
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/77487639 一.配置讲解 1.配置DNS 修改对应网卡的DNS的配置文件 # v ...
- Linux基础入门 vim常用命令详解
介绍 vim是一个文本编辑程序 没有菜单,只有命令,且命令繁多 命令行模式下相关命令 移动光标 h: ← 左移 l: → 右移 j: ↓ 下移 k: ↑ 上移 gg: 光标移动文件 ...
- html ul li 自定义宽
1. ul里面的样式 2. ul li 里面的样式
- regsvr32 bypass windows defender 新思路
原文链接:blog 在对regsvr32的用法进行了解之后,对于Casey Smith的远程js脚本执行命令的思路很感兴趣. 命令语法如下: regsvr32 /s /n /u /i:http://1 ...
- (转载)跟Classic ARM 处理器说拜拜——Atmel SAMA5D3 Xplained开发板评测
2014 年 4 月 10 日 时间: 下午 3:15 作者: 幸得安然 电子产业的蓬勃发展带来了史无前例的生活.生产大跃进,但是,人们在享受发展喜悦的同时又不得不面临现实现状的囧境--在以移动电子设 ...
- python中input()函数与print()函数
一.input()函数详解 二.print()函数详解 三.类型转换
- fastdfs之同一台storage server下包含多个store path
一,查看本地centos的版本 [root@localhost lib]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) 说 ...
- linux(centos8):sed命令的应用例子
一,sed命令的用途 sed是Linux下一款功能强大的非交互流式文本编辑器, 可以对文本文件进行增.删.改.查等操作, 支持按行.按字段.按正则匹配文本内容. 说明:刘宏缔的架构森林是一个专注架构的 ...