Heim >Java >javaLernprogramm >Fallcodeanalyse für Java-Annotationseinträge

Fallcodeanalyse für Java-Annotationseinträge

PHPz
PHPznach vorne
2023-04-24 17:13:081225Durchsuche

Sprechen ist günstig, zeig mir den Code.

Annotationen definieren

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();
}

Klassen definieren

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 + "]";
	}
}

Annotationsklassen verarbeiten

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;
	}
}

Test

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());
	}
}

Testergebnisse

Fallcodeanalyse für Java-Annotationseinträge

Eine kurze Erklärung lautet wie folgt

Hier wird eine sehr einfache Annotationsklasse verwendet, die die beiden grundlegendsten Meta-Annotationen verwendet (die Bedeutung von Meta-Annotationen ist: ändert die Attribute der Klasse bis zur Laufzeit beibehalten).
Dann können Sie Anmerkungen ganz einfach verwenden, genau wie im Folgenden.

@MyLoveForYou(love="Meine Liebe ist auch mein Herz") <code>@MyLoveForYou(love="吾爱亦吾心")

这里强调以下,单纯的使用注解是没有任何用的,注解需要借助专门的工具处理,这里定义一个简单的处理注解的类(这个类可能需要一点反射的知识,但是也不要紧,如果你只想知道注解的作用,也可以不用管它,记住用法就行了):ProcessAnnotation
Ich betone Folgendes: Anmerkungen müssen nicht mit speziellen Werkzeugen verarbeitet werden einfache Definition Eine Klasse zum Verarbeiten von Anmerkungen (Diese Klasse erfordert möglicherweise ein wenig Reflexionswissen, aber das spielt keine Rolle. Wenn Sie nur die Funktion von Anmerkungen wissen möchten, können Sie es in Ruhe lassen und sich einfach an die Verwendung erinnern): ProcessAnnotationVerwendung: Diese Klasse macht eine Sache: Sie weist Liebe
den Wert zu als

Meine Liebe ist mein Herz🎜. 🎜Der letzte Schritt ist das Testen. Die toString()-Methode wurde hier umgeschrieben, damit sie intuitiver aussieht. 🎜

Das obige ist der detaillierte Inhalt vonFallcodeanalyse für Java-Annotationseinträge. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen