java回顾之反射和注解
2021-03-20 21:25
标签:暴力反射 标记 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) 可以获取某一个构造方法(公共的) 反射执行构造方法 Constructor类可以调用: newInstance(Object... obj) : 执行当前构造方法创建对象。 反射获取成员方法 Class类中的方法: 在一个类中有些成员因为权限的问题无法访问,暴力反射的作用就是跳过权限的限制,可以访问私有成员。 暴力反射写法:在之前的方法中间加Declared 在执行之前: .setAccessable(true);//设置成可访问 暴力反射技术一般不用, 因为他打破java的规范。 注解就是@ 注解是类的一个组成部分,可以给类添加一些额外的内容,注解相当于是一个标记。 生成帮助信息 编译检查 有功能性质 格式【记住】 } 元注解 反射【重点】 //如果你之前见过快速创建对象的方式,你可以去用,但是那个东西已经过时了。 获取构造方法【重点】 执行构造方法: 获取成员方法【重点中的重点】 执行成员方法: 暴力反射 java回顾之反射和注解 标签:暴力反射 标记 tcl eth ext ssl 括号 属性 函数式 原文地址:https://www.cnblogs.com/gushiye/p/13911048.htmljava回顾之反射和注解
1.类加载
1.类的加载
2.类的加载时机
3.类加载器
2.反射
1.反射的概念
2.获取字节码对象的三种方式
3.反射操作构造方法
getConstructors() 可以获取所有的构造方法(公共的)4.反射操作成员方法
getMethod(String name, Class... c) :获取一个成员方法(公共的)
getMethods() : 获取类中的所有方法(公共的)
5.暴力反射
3.注解
1.概述
2.注解的作用
@author 作者
@param 参数介绍@Override 检查方法是一个重写方法
@FunctionalInterface 检查接口是一个函数式接口@Test 单元测试
@After3、自定义注解
public @interface 注解{
属性
格式
数据类型 属性名();
数据类型
基本数据类型
String
Class
枚举
注解
以上类型的数据形式
注意事项:【记住】
1.如果属性有默认值,在使用时可以不赋值
2.如果只有一个属性且名字叫value,在使用是可以省略value=
3.数组类型的属性如果只有一个元素,可以省略大括号{}
@Target
定义注解的使用位置
@Retention
定义注解的生命周期总结:
概念
反射是一种机制,能够在成员运行期间,获取类中的各种成员
getConstructors() :获取所有的构造方法
getConstructor() :获取某一个构造方法
newInstance() :执行
getMethods() :获取所有的成员方法
getMethod() :获取某一个成员方法
invoke() :执行
在上面获取的方法中间加上Declared
获取之后设置访问权限:setAccessable(true);