哈尔滨市住房与城乡建设局网站,网站的色彩,网站建设漳州,合肥有什么好的网站建设公司好什么是注解(Annotation)注解顾名思义为注释、讲解#xff0c;可以理解为一种标签或标记#xff0c;可以用在类、方法或者域上。向类、方法等添加注解#xff0c;相当于给他们贴上了一层标签。注解使用在使用注解时#xff0c;在类名、方法名、域上直接用注解名即可。比如一…什么是注解(Annotation)注解顾名思义为注释、讲解可以理解为一种标签或标记可以用在类、方法或者域上。向类、方法等添加注解相当于给他们贴上了一层标签。注解使用在使用注解时在类名、方法名、域上直接用注解名即可。比如一个叫做MyAnnotation的注解:1.类注解在类A上添加MyAnnotaion即用MyAnnotation注解了类A。方法、域同理。MyAnnotationpublic class A{}2.方法注解用MyAnnotation注解了方法method()。MyAnnotationpublic void method(){//TODO}3.域注解。用MyAnnotation注解了域apublic class A{MyAnnotationint a; //域a}自定义注解java给我们提供了很多注解有时我们需要自定义的注解。自定义注解和接口定义很像比如我们定义一个叫做MyAnnotation的注解像下面这样就定义好了。public interface MyAnnotation{}注解属性注解的作用不只是一个名字那么简单它可以包含许多属性即成员变量就像一张标签上可以写很多东西一样。所以可以在定义注解时添加各种属性。public interface MyAnnotation{int id();String msg();}MyAnnotation注解中的id、msg就是它的属性。可以看到定义属性和在接口中定义方法类似。定义属性过后我们在使用注解时就可以加上属性值。如下在注解类A时声明了属性id0msg为helloMyAnnotation(id 0,msg hello)class A{}--注意--1.在使用注解时属性都要赋值如上面的id 0,多个属性用逗号(,)隔开。2.定义注解时可以给属性加上默认值这样可以在使用的时候不用赋值。定义默认值用default如下定义连个属性的默认值分别为1和“hi”public interface MyAnnotation{int id() default 1;String msg() default hi;}3.如果一个注解内仅仅只有一个名字为 value 的属性时可以直接在括号内填写属性值如public interface MyAnnotation{int value();}使用时可以不需要value 0直接填写0当然填写value0也是正确的。MyAnnotation(0)class A{}反射(Reflaction)获取注解JAVA中反射是动态获取信息以及动态调用对象方法的一种反射机制。就像我们看世间万物都是光反射进我们眼睛的结果光反射是什么样我们看到的就是什么样为什么太空是黑的就是因为太空没有灰尘反光。JAVA的反射也是同理我们需要获取类的信息时就需要通过反射。注解的获取同样是通过反射。获取注解有几个主要方法。1.isAnnotationPresent()是否含有某个注解。public boolean isAnnotationPresent(Class extends Annotation annotationClass) {}比如获取类A是否有注解MyAnnotation有返回true没有返回false。boolean b A.class.isAnnotationPresent(MyAnnotation.class);2.getAnnotation()获取某种注解对象。public A getAnnotation(Class annotationClass) {}比如获取类A的注解对象。获取到后我们就得到应用在类A时该注解的属性值。MyAnnotation m A.class.getAnnotation(MyAnnotation.class);int id m.id();String msg m.msg();3.getAnnotations()获取应用的所有注解结果存进数组。public Annotation[] getAnnotations() {}除了用类调用上述方法我们还可以获取到该类中的方法和域去调用。假如类A有方法method()有域a。public class A{int a;public void myMethod(){//TODO}}1.获取类方法参数为方法名字符串。Method method A.class.getDeclaredMethod(myMethod);2.获取域Field field A.class.getDeclaredField(a);