标签:暴力反射 标记 tcl eth ext ssl 括号 属性 函数式
当一个类第一次被使用的时候,会被加载到方法区,且一个类只会加载一次。
一个类在内存中只有唯一的一个字节码对象(.class对象)
创建类的实例。
调用类的静态变量,或者为静态变量赋值。
调用类的静态方法。
使用反射方式来强制创建某个类或接口对应的java.lang.Class对象。
直接使用java.exe命令来运行某个主类。
类加载器的功能就是完成类的加载。
启动类加载器(Bootstrap ClassLoader)
扩展类加载器(Extension ClassLoader) 在JDK9以后更名为平台类加载器(Platform ClassLoader)
应用程序类加载器(Application ClassLoader)
idea获取类加载器
反射是一种机制,可以在程序运行期间,去调用类中的各种成员。(构造方法,变量,方法),可以不创建对象,就是用里面的方法
使用类名调用class属性
使用对象调用getClass()方法
使用Class类的静态方法forName()
反射获取构造方法
Class类可以调用:
getConstructor(Class... c) 可以获取某一个构造方法(公共的)
getConstructors() 可以获取所有的构造方法(公共的)
反射执行构造方法
Constructor类可以调用:
newInstance(Object... obj) : 执行当前构造方法创建对象。
反射获取成员方法
getMethod(String name, Class... c) :获取一个成员方法(公共的)
getMethods() : 获取类中的所有方法(公共的)
在一个类中有些成员因为权限的问题无法访问,暴力反射的作用就是跳过权限的限制,可以访问私有成员。
暴力反射写法:在之前的方法中间加Declared
在执行之前: .setAccessable(true);//设置成可访问
暴力反射技术一般不用, 因为他打破java的规范。
注解就是@
注解是类的一个组成部分,可以给类添加一些额外的内容,注解相当于是一个标记。
生成帮助信息
@author 作者
@param 参数介绍
编译检查
@Override 检查方法是一个重写方法
@FunctionalInterface 检查接口是一个函数式接口
有功能性质
@Test 单元测试
@After
格式【记住】
public @interface 注解{
}
属性
格式
数据类型 属性名();
数据类型
基本数据类型
String
Class
枚举
注解
以上类型的数据形式
注意事项:【记住】
1.如果属性有默认值,在使用时可以不赋值
2.如果只有一个属性且名字叫value,在使用是可以省略value=
3.数组类型的属性如果只有一个元素,可以省略大括号{}
元注解
@Target
定义注解的使用位置
@Retention
定义注解的生命周期
反射【重点】
概念
反射是一种机制,能够在成员运行期间,获取类中的各种成员
//如果你之前见过快速创建对象的方式,你可以去用,但是那个东西已经过时了。
获取构造方法【重点】
getConstructors() :获取所有的构造方法
getConstructor() :获取某一个构造方法
执行构造方法:
newInstance() :执行
获取成员方法【重点中的重点】
getMethods() :获取所有的成员方法
getMethod() :获取某一个成员方法
执行成员方法:
invoke() :执行
暴力反射
在上面获取的方法中间加上Declared
获取之后设置访问权限:setAccessable(true);
标签:暴力反射 标记 tcl eth ext ssl 括号 属性 函数式
原文地址:https://www.cnblogs.com/gushiye/p/13911048.html