Java初心者学習ガイド[day22] ---アノテーションとリフレクション

1.注釈

定義:メタデータ、ラベル、コメントとも呼ばれ、データを説明するために使用されるデータであり、コードレベルでのコメントであり、コードが表示するためのものです。

4つの組み込みアノテーション:アノテーション:組み込みアノテーション(JDKによって定義されたコメント)

@Targetは、アノテーションが使用される場所を決定します

1. @Override

役割:現在のメソッドがメソッドの書き換えであるかどうかを確認する

使用法:方法

2. @非推奨

機能:マークが古くなっています。古くなっているからといって使用できないわけではありませんが、お勧めしません。

使用法:構築メソッド、フィールド、ローカル変数、メソッド、パッケージ、パラメーター、クラス

3. @SuppressWarings

役割:警告を抑制することは、問題の根本的な解決策ではありません。率直に言って、Eclipseの黄色の警告行を削除して、コードをきれいに見せることです。

使用法:クラス、フィールド、メソッド、パラメーター、構築メソッド、ローカル変数

値の受け渡し:使用時に値を渡すことができ、SuppressWaringsが渡すことができる値:すべて

4. @SafeVarargsは、ヒープ汚染の警告を抑制します(個別の警告)

役割:ヒープ汚染警告を抑制する

使用法:工法、工法

注:SafeVarargsは後のバージョンで追加され、以前はSuppressWaringsを使用して解決していました

4つのメタ注釈:注釈を定義するために使用される注釈

1、@ Target

機能:[注釈]の場所を説明するために使用されます

ElementType:

タイプ:クラスフィールド:フィールド

メソッド:メソッドPARAMETER:パラメーター-パラメーター名

CONSTRUCTOR:構築メソッドLOCAL_VARIABLE:ローカル変数

ANNOTATION_TYPE:注釈パッケージ:パッケージ

TYPE_PARAMETER:パラメータタイプTYPE_USE:どこでも

2. @ Retention

役割:[注釈]のライフサイクルを説明するために使用されます

RetentionPolicy:

ソース:ソースコードクラス:バイトコード期間ランタイム:動作期間

3. @ Documented

機能:ドキュメントの生成後に現在のコメントが表示されるかどうかを説明するために使用されます

4. @継承

役割:@AliExpressで定義されたアノテーションは継承されます

アノテーション内の変数:タイプ変数名()

注釈の値を渡す:

一般的な方法:name = value、array name = {value 1、value 2、value 3、...}

その他の一般的な方法:アノテーションに必要な値が1つだけで、名前がvalueの場合、名前は省略できます。

注:カスタムアノテーションはサードパーティプログラムによって実装されます

2.リフレクション(民営化されたメンバーを使用する場合は、最初に権限チェックsetAccessible(true)を無視します)

class:クラスClassのインスタンスは、実行中のJavaアプリケーションのクラスとインターフェースを表します。

1.列挙は一種のクラスです-----> Getメソッド1、2、3

2.アノテーションはインターフェースです----->取得方法1、3

3、各配列はクラスに属し、Classオブジェクトにマップされます。すべての配列要素は、同じタイプと次元を持ち、共有Classオブジェクトです-----> 1,2取得方法

図4に示すように、基本的なJava型booleanbytecharshortintlong、、float及びdouble)及びキーワードはvoidまたとして表されるClassオブジェクト。----->メソッドの取得1.基本データ型に対応するパッケージングクラスは、基本データ型のClassインスタンスを保持します。

クラスオブジェクトを取得する3つの方法

1、类名.class
2、对象名.getClass();
3、Class.forName(String str);

反射取得工法

		1、通过Class对象创建
			Object newInstance(); 要求:Class对象里面必须要有公共无参数的构造方法
		2、获取构造方法再创建对象
			获取构造方法
			---------------获取公共的构造方法----------------
				Constructor<T> getConstructor(Class<?>... parameterTypes)
    			//参数------parameterTypes - 参数数组 
				Constructor<?>[] getConstructors()
			---------------获取所有的构造方法----------------
				Constructor getDeclaredConstructor(Class<?>... parameterTypes)
  			  //参数--------parameterTypes - 参数数组 
				Constructor[] getDeclaredConstructors()
			创建对象
				T newInstance(Object... o);

反射取得方法

		1、获取Class对象里面的方法
		---------------获取公共的方法(包括继承来的)----------------
			Method getMethod(String name, Class<?>... parameterTypes)
    		// name - 方法名
			// parameterTypes - 参数列表
			Method[] getMethods()
				
		---------------获取所有的方法(不包括继承来的)----------------
			Method getDeclaredMethod(String name, Class<?>... parameterTypes)
    		//name - 方法名
			//parameterTypes - 参数数组 
			Method[] getDeclaredMethods()
			
		2、调用获取到的方法
			Object invoke(Object o,Object... obj);
			o:调用方法的对象
			obj:方法需要的实参

フィールドを取得するために反映します

	1、获取Class对象里面的字段
		---------------获取公共的字段----------------
			Field getField(String name) 
    		// name - 字段名
			 Field[] getFields() 
		---------------获取所有的方法(不包括继承来的)----------------
			 Field getDeclaredField(String name)  
    		//name - 字段名
			Field[] getDeclaredFields()  

おすすめ

転載: blog.csdn.net/WLK0423/article/details/109785677