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()); } }
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) : ProcessAnnotation
Usage : Cette classe fait une chose, attribuer la valeur à love
comme
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!