ホームページ >Java >&#&チュートリアル >Java アノテーション エントリのケース コード分析

Java アノテーション エントリのケース コード分析

PHPz
PHPz転載
2023-04-24 17:13:081229ブラウズ

トークは安いので、コードを見せてください。

定義アノテーション

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyLoveForYou {
	String love();
}

定義クラス

public class Love {
	@MyLoveForYou(love="吾爱亦吾心")
	private String love;
	public String getLove() {
		return love;
	}
	public void setLove(String love) {
		this.love = love;
	}
	//重写 toString() 方法。
	@Override
	public String toString() {
		return "Love [love=" + love + "]";
	}
}

アノテーション クラスの処理

import java.lang.reflect.Field;

public class ProcessAnnotation {
	private static Love love;
	
	//创建 love 实例
	public static Love getLove(){
		Class<?> clazz = Love.class;
		try {
			Field field = clazz.getDeclaredField("love");
			field.setAccessible(true);
			MyLoveForYou  myLoveForYou = field.getAnnotation(MyLoveForYou.class);
			String fieldLove = myLoveForYou.love();
			try {
				love = (Love)clazz.newInstance();
			} catch (InstantiationException | IllegalAccessException e) {
				e.printStackTrace();
			}
			love.setLove(fieldLove);
		} catch (NoSuchFieldException | SecurityException e) {
			e.printStackTrace();
		}
		return love;
	}
}

テスト

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

public class Test {
	public static void main(String[] args) throws 
	ClassNotFoundException, NoSuchMethodException, 
	SecurityException, InstantiationException, 
	IllegalAccessException, IllegalArgumentException, InvocationTargetException {
	//异常有点多,但是不用担心,其实只有三行代码。
		Love love = ProcessAnnotation.getLove();
		System.out.println(love.getLove());
		System.out.println(love.toString());
	}
}

テスト結果

Java アノテーション エントリのケース コード分析

#簡単な説明は次のとおりです。

ここでは、2 つの最も基本的なメタ アノテーションを使用して、非常に単純なアノテーション クラスが使用されています (メタ アノテーションの意味は次のとおりです)。クラス プロパティ は実行時 ) まで保持されます。 次に、アノテーションを使用します。単純な使用方法は、次のように非常に簡単です。

@MyLoveForYou(love="私の愛も私の心です")

次の点を強調します。注釈を使用するだけでは役に立ちません。注釈には特別なツール処理が必要です。 、ここでは、アノテーションを処理するための単純なクラスを定義しています (

このクラスには、リフレクションに関する少しの知識が必要になる可能性がありますが、問題ではありません。アノテーションの機能を知りたいだけの場合は、そのままにしておいて、覚えておくだけで問題ありません)使用法): ProcessAnnotation
Usage: このクラスは 1 つのことを行い、値を love我愛也我として割り当てます。心最後のステップはテストです。ここでは toString() メソッドが書き直されており、より直感的に見えます。

以上がJava アノテーション エントリのケース コード分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。