源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java自定义注解接口实现方案

  • 时间:2020-01-04 01:54 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java自定义注解接口实现方案
java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。 注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。包含在 java.lang.annotation 包中。 [b]1、元注解[/b] 元注解是指注解的注解。包括 @Retention @Target @Document @Inherited四种。 1.1、@Retention: 定义注解的保留策略[b] [/b]Java代码
[u]复制代码[/u] 代码如下:
@Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含 @Retention(RetentionPolicy.CLASS) //默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得, @Retention(RetentionPolicy.RUNTIME)//注解会在class字节码文件中存在,在运行时可以通过反射获取到
1.2、@Target:定义注解的作用目标[b] [/b]Java代码
[u]复制代码[/u] 代码如下:
@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:说明子类可以继承父类中的该注解 下面是自定义注解的一个例子 [b]2、注解的自定义[/b] Java代码
[u]复制代码[/u] 代码如下:
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface HelloWorld { public String name() default ""; }
[b]3、注解的使用,测试类[/b] Java代码
[u]复制代码[/u] 代码如下:
public class SayHello { @HelloWorld(name = " 小明 ") public void sayHello(String name) { System.out.println(name + "say hello world!"); }//www.heatpress123.net }
[b]4、解析注解[/b] java的反射机制可以帮助,得到注解,代码如下: Java代码
[u]复制代码[/u] 代码如下:
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); } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部