反射機制
AVA反射機制是在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個物件,都能夠呼叫它的任意一個方法和屬性;這種動態獲取的資訊以及動態呼叫物件的方法的功能稱為java語言的反射機制,
Java反射機制在框架設計中極為廣泛,需要深入理解,
反射基礎
RTTI(Run-Time Type Identification)運行時型別識別,其作用是在運行時識別一個物件的型別和類的資訊,
反射就是把java類中的各種成分映射成一個個的Java物件
例如:一個類有:成員變數、方法、構造方法、包等等資訊,利用反射技術可以對一個類進行解剖,把個個組成部分映射成一個個物件,
反射的使用
TIP
基于此我們如何通過反射獲取Class類物件以及類中的成員變數、方法、構造方法等


輸出的結果




注解和反射
* 注解: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注解,那么其子類也會繼承這個注解




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 = https://www.cnblogs.com/ychptz/archive/2022/08/10/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://www.cnblogs.com/ychptz/p/16574275.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/501489.html
標籤:其他
