![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
注解与反射
dingha 2333
这个作者很懒,什么都没留下…
展开
-
反射操作注解
1. 反射可以对注解实现的操作获取类的外部注解Annotation[] annotations = c1.getAnnotations();获得注解的 value 值Haha haha = (Haha) c1.getAnnotation(Haha.class);System.out.println(haha.value());获得类指定的注解,例如获得特定属性的注解先得到属性,再得到属性的注解,然后输出。2. 代码实现package com.dingha.refle原创 2021-03-12 10:17:35 · 164 阅读 · 0 评论 -
测试不同方式调用方法的性能(反射与正常)
1. 测试三种方式普通方式new 对象,调用方法。输出前后执行时间。反射方式调用根据对象反射出 Class 类,获得类的方法,然后调用方法执行,输出前后执行时间。反射方式调用,关闭检测与方式二基本一致,只是关闭权限检测getName.setAccessible(true);2. 代码实现package com.dingha.reflection;import java.lang.reflect.InvocationTargetException;import j原创 2021-03-11 23:34:10 · 213 阅读 · 0 评论 -
利用Class创建对象并执行方法
从Class出发可以做创建对象User user = (User)c1.newInstance()通过构造器调用对象先查找构造器,再调用构造器创建对象Constructor constructor = c1.getDeclaredConstructor(String.class, int.class, int.class);调用普通方法,然后激活方法Method setName = c1.getDeclaredMethod(“setName”, String.class);s原创 2021-03-11 11:29:53 · 1420 阅读 · 0 评论 -
获取类的运行时结构
根据已知类获得其内部结构getDeclared表示获得本类的全部后面不带参数,表示获得全部,带参数表示获得指定的属性、方法、构造器。package com.dingha.reflection;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;public class Test08 { public static void main原创 2021-03-10 23:43:12 · 71 阅读 · 0 评论 -
什么时候会发生类初始化
1. 理论类的主动引用(一定会发生类的初始化)虚拟机启动的时候,先初始化main方法所在的类new 一个类的对象调用类的静态成员(除了final常量)和静态方法对类进行反射调用的时候初始一个类的时候,如果父类没有被初始化,则会先初始化它的父类类的被动引用(不会发生类的初始化)当访问一个静态域时,只有真正声明这个域的类才会被初始化。(是谁的,谁才会被初始化)如,通过子类引用父类的静态变量,不会导致子类初始化。通过定义数组类引用,不会发生类的初始化引用常量不会触发此类的初始化(常量原创 2021-03-10 10:22:23 · 286 阅读 · 0 评论 -
代码验证所有类型的Class对象
代码package com.dingha.reflection;import java.lang.annotation.ElementType;public class Test04 { public static void main(String[] args) { Class c1 = Object.class; Class c2 = Comparable.class; Class c3 = String[].class;原创 2021-03-09 15:36:29 · 123 阅读 · 0 评论 -
获得Class的几种方式
五种方式获得Class通过对象获得forname获得通过类名.Class获得基本内置类型的包装类都有一个Type属性基本内置类型的包装类都有一个Type属性代码实现package com.dingha.reflection;//测试Class类的创建方式有哪些public class Tset03 { public static void main(String[] args) throws ClassNotFoundException { Perso原创 2021-03-09 15:15:51 · 238 阅读 · 0 评论 -
获得反射对象
反射概述反射机制允许程序在执行期借助于Reflection API 取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。类被加载之后,在堆内存的方法区就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象包含了类的完整结构信息。通过对象来看到类的结构,这个过程形象的称为反射反射方式:从实例化对象出发,通过 getClass() 方法,得到完整的“包类”名称代码实现package com.dingha.reflection;public c原创 2021-03-09 10:53:57 · 63 阅读 · 0 评论 -
自定义注解
注意点注解可以显示赋值,如果没有默认值,我们就必须给注解赋值注解的参数 :参数类型 + 参数名 ();只有当注解只有一个参数时,而且参数名为"value"的时候,在使用注解时可以省略注解的参数名代码实现package com.dingha.annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.Rete原创 2021-03-08 16:57:04 · 55 阅读 · 0 评论 -
元注解
1. 元注解的知识点元注解的作用就是负责注解其他注解(可以理解为给其他注解写规范)Java 定义了四个元注解,对其他注解annotation类型作说明。@Target : 用于描述注解使用范围(即被描述的注解可以用在什么地方)。@Retention : 表示需要在什么级别保存该注释信息,用于描述注解的生命周期。 (SOURCE < CLASS < RUNTIME)@Documented : 表示是否将我们的注解生成在JAVAdoc中@Inherited : 表示子类可以继承父原创 2021-03-08 15:57:06 · 202 阅读 · 0 评论