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() ...
随机推荐
- Book of Shaders 04 - 网格噪声:Worley Noise
0x00 思路 假设要生成 4 个网格,可以先在空间中指定 4 个特征点.对于每个像素点,计算它到最近特征点的距离,将这个距离当作结果值输出. #ifdef GL_ES precision mediu ...
- 获取豆瓣读书所有热门标签并保存到mongodb数据库
目标url:https://book.douban.com/tag/?view=type&icn=index-sorttags-all 目的:抓取所有标签名称(tag_name),标签链接(t ...
- VS 高级版本新建的项目如何降级使低版本 VS 可以打开
转载:https://blog.csdn.net/u012814856/article/details/70325267 一.引言 这里因为工作的原因,公司项目使用的是 VS2015 的编译环境,但是 ...
- spring-boot-route(十二)整合redis做为缓存
redis简介 redis作为一种非关系型数据库,读写非常快,应用十分广泛,它采用key-value的形式存储数据,value常用的五大数据类型有string(字符串),list(链表),set(集合 ...
- 搭建zabbix+grafana监控
编写一件安装脚本 #!/bin/sh echo "\033[32;1m脚本作者:fage\033[0m" #sleep 10 zabbix_version=4.0.2 zabbix ...
- dockerfile关键字
DockerFile关键字(保留字指令) FORM:基础镜像,表明当前镜像是基于那么镜像的 MAINTAINER :镜像维护者的名字和邮箱地址 RUN:容器构建时需要用到的命令 EXPOSE:当前容器 ...
- day22 函数整理
# 1.计算 年月日时分秒 于现在之间差了多少 格式化时间 # 现在 # 某一个年月日时分秒 参数 # import time # def get_time(old_t,fmt = '%Y-%m-%d ...
- 阅读-Calibre Library转PDF、EPUB配置
提示:如果想恢复默认设置,点击"恢复默认值"即可 -----EPUB (MOBI同理)----- 目标:解决转换过程中图片清晰度丢失问题(分辨率太低) 右击-转换书籍-逐个转换 输 ...
- Business Partner - 供应商与客户的集成 - S/4HANA(1)
本文基于S/4HANA 1511版本,同时大部分内容适用于S/4HANA i.e1610/1709/1809. 本文旨在为全新实施的BP配置,或从ECC到S/4HANA的供应商客户主数据迁移提供信息支 ...
- py中变量名的“秘密”
今天突然脑子发抽,想到py里有没有指针这个概念,于是我马上google.baidu了一波,发现网上大多都在说py.java.c#这类纯面向对象的编程语言用对象的概念能完全替代指针.那么问题来了,没有指 ...