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

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

PHPz
Libérer: 2023-04-24 17:13:08
avant
1229 Les gens l'ont consulté

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();
}
Copier après la connexion

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 + "]";
	}
}
Copier après la connexion

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;
	}
}
Copier après la connexion

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());
	}
}
Copier après la connexion

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal