java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。包含在 java.lang.annotation 包中。 1、元注解 元注解是指注解的注解。包括 @Retention @Target @Document @Inherited四种。 1.1、@Retention: 定义注解的保留策略 - @Retention(RetentionPolicy.SOURCE)
- @Retention(RetentionPolicy.CLASS)
- @Retention(RetentionPolicy.RUNTIME)
1.2、@Target:定义注解的作用目标 Java代码- @Target(ElementType.TYPE)
- @Target(ElementType.FIELD)
- @Target(ElementType.METHOD)
- @Target(ElementType.PARAMETER)
- @Target(ElementType.CONSTRUCTOR)
- @Target(ElementType.LOCAL_VARIABLE)
- @Target(ElementType.ANNOTATION_TYPE)
- @Target(ElementType.PACKAGE)
elementType 可以有多个,一个注解可以为类的,方法的,字段的等等 1.3、@Document:说明该注解将被包含在javadoc中 1.4、@Inherited:说明子类可以继承父类中的该注解 下面是自定义注解的一个例子 2、注解的自定义 - @Retention(RetentionPolicy.RUNTIME)
- @Target(ElementType.METHOD)
- public @interface HelloWorld {
- public String name() default "";
- }
3、注解的使用,测试类 - public class SayHello {
-
- @HelloWorld(name = " 小明 ")
- public void sayHello(String name) {
- System.out.println(name + "say hello world!");
- }
- }
4、解析注解 java的反射机制可以帮助,得到注解,代码如下: - public class AnnTest {
- public void parseMethod(Class> clazz) {
- Object obj;
- try {
-
- obj = clazz.getConstructor(new Class[] {}).newInstance(
- new Object[] {});
- for (Method method : clazz.getDeclaredMethods()) {
- HelloWorld say = method.getAnnotation(HelloWorld.class);
- String name = "";
- if (say != null) {
- name = say.name();
- System.out.println(name);
- method.invoke(obj, name);
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static void main(String[] args) {
- AnnTest t = new AnnTest();
- t.parseMethod(SayHello.class);
- }
- }
-
行业门户()文章,希望大家可以留言建议
阅读(850) | 评论(0) | 转发(0) |