Maison  >  Article  >  Java  >  Analyse du code de cas d'entrée d'annotation Java

Analyse du code de cas d'entrée d'annotation Java

PHPz
PHPzavant
2023-04-24 17:13:081191parcourir

Parler ne coûte pas cher, montre-moi le code.

Définir des annotations

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

Définir des classes

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

Processus d'annotations de classes

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

T meilleurs résultats

Analyse du code de cas dentrée dannotation Java

Une brève explication est la suivante

Une classe d'annotation très simple est utilisée ici, utilisant les deux méta-annotations les plus basiques (la signification des méta-annotations est : modifie les attributs de la classe conservée jusqu'à l'exécution).
Ensuite, vous pouvez utiliser des annotations. Une utilisation simple est en fait très simple, tout comme ce qui suit.

@MyLoveForYou(love="Mon amour est aussi mon cœur")@MyLoveForYou(love="吾爱亦吾心")

这里强调以下,单纯的使用注解是没有任何用的,注解需要借助专门的工具处理,这里定义一个简单的处理注解的类(这个类可能需要一点反射的知识,但是也不要紧,如果你只想知道注解的作用,也可以不用管它,记住用法就行了):ProcessAnnotation
J'insiste sur ce qui suit : la simple utilisation d'annotations ne sert à rien. Les annotations doivent être traitées avec des outils spécialisés. définition simple Une classe pour traiter les annotations (Cette classe peut nécessiter un peu de connaissances en réflexion, mais ce n'est pas grave. Si vous voulez juste connaître la fonction des annotations, vous pouvez la laisser tranquille et vous rappeler simplement l'utilisation) : ProcessAnnotationUsage : Cette classe fait une chose, attribuer la valeur à love
comme

Mon amour est mon cœur🎜. 🎜La dernière étape consiste à tester. La méthode toString() a été réécrite ici pour la rendre plus intuitive. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer