大连全瓷种植牙齿制作中心 发表于 2022-9-16 17:14:26

2022-8-10 JAVA的反射机制

反射机制

AVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
Java反射机制在框架设计中极为广泛,需要深入理解。
反射基础

RTTI(Run-Time Type Identification)运行时类型识别,其作用是在运行时识别一个对象的类型和类的信息。
反射就是把java类中的各种成分映射成一个个的Java对象
例如:一个类有:成员变量、方法、构造方法、包等等信息,利用反射技术可以对一个类进行解剖,把个个组成部分映射成一个个对象。
反射的使用

TIP
基于此我们如何通过反射获取Class类对象以及类中的成员变量、方法、构造方法等
https://img2022.cnblogs.com/blog/2927193/202208/2927193-20220810230545819-1682629931.png
https://img2022.cnblogs.com/blog/2927193/202208/2927193-20220810230556025-2099771900.png
输出的结果
https://img2022.cnblogs.com/blog/2927193/202208/2927193-20220810230609035-866532540.png
https://img2022.cnblogs.com/blog/2927193/202208/2927193-20220810230639414-896950052.png
https://img2022.cnblogs.com/blog/2927193/202208/2927193-20220810230702466-668020331.png
https://img2022.cnblogs.com/blog/2927193/202208/2927193-20220810230737691-848093100.png
注解和反射

*注解:Annotation,Java标注,JDK5引入的一种机制。
*Java中类,方法,变量,参数,包都可以被标注
*
*元注解:专门给注解加的注解我们发现注解中可以有方法,

*1、定义方法的格式:String name();
*2、可以有默认值,也可以没有,如果没有默认值在使用的时候必须填写对应的值
*      如果需要有默认值,使用default指定默认值。
*3、如果想在使用的时候不指定具体的名字,
*
*如果不学习反射,注解没啥用!!!

[*]
在java的整个的注解体系中,有3个非常重要的主干类,

*1、Annotation 接口,定义一些常用的方法
*2、ElementType 枚举
*      它用来指定注解的类型。说人话,我的注解要用在哪里???
*3、RetentionPolicy 枚举
*      它用来指定注解的策略。不同类型的策略指定的注解的作用域不同。
*   (1)SOURCE,注解仅存在于编译器处理期间,编译期处理完之后,这个注解就没用了
*   (2)CLASS,注解在.class文件中依然有效。
*   (3)RUNTIME,编译期是不起作用的,只有在运行期才由JVM读取。Java自带的注解

10个。4个注解java.lang.annotation
6个注解在java.lang
作用在代码上的注解

[*]1、@Override,检查该方法是否是重写方法。如果返现其父类,或者是引用的接口中没有该方法,会报错
[*]2、@Deprecated,标记的方法,过时的方法。
[*]3、@SuppressWarnings编辑器去忽略警告
[*]4、@SafeVarargs,JDK7支持忽略任何使用参数为泛型变量的方法或构造器产生的警告
[*]5、@FunctionalInterface,JDK8开始支持,表示一个接口为函数式接口
[*]6、@Repeatable,JDK8开始支持,标识某个注解可以在同一个声明上使用多次
all:忽略所有警告
boxing:忽略装箱、拆箱警告
rawtypes:使用生成时没有指定数据类型
unchecked:忽略没有进行类型检查操作的警告
unused:忽略没有使用的警告
元注解:


[*]1、@Retention:标识这个注解作用域
[*]2、@Documented:标记这个注解是否包含在用户文档中
[*]3、@Target:这个注解可以修饰哪些信息
[*]4、@Inherited:如果一个类用上了@Inherited注解,那么其子类也会继承这个注解
https://img2022.cnblogs.com/blog/2927193/202208/2927193-20220810231007013-156270109.png
https://img2022.cnblogs.com/blog/2927193/202208/2927193-20220810231024473-1055042733.png
https://img2022.cnblogs.com/blog/2927193/202208/2927193-20220810231044695-1369086669.png
https://img2022.cnblogs.com/blog/2927193/202208/2927193-20220810232300692-42434384.png
package com.jsoft.morning;

@Bean
public class Dog {

public String type;
private String name;
private String color;

public Dog() {

}

private Dog(String name){
    this.name = name;
}

public Dog(String name, String color) {
    this.name = name;
    this.color = color;
}

public String getType() {
    return type;
}

public void setType(String type) {
    this.type = type;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getColor() {
    return color;
}

public void setColor(String color) {
    this.color = color;
}
@MyAnnotation(value = 20,age=10)
public void show(String str) {
    System.out.println("show方法..." + str);
}
public String info() {

    return "info方法";
}
private void fun() {
    System.out.println("私有的fun方法...");
}}
https://img2022.cnblogs.com/blog/2927193/202208/2927193-20220810231149609-795715210.png
https://img2022.cnblogs.com/blog/2927193/202208/2927193-20220810231204277-580722096.png
https://img2022.cnblogs.com/blog/2927193/202208/2927193-20220810231219894-755217775.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 2022-8-10 JAVA的反射机制