比如我有以下的一个方法
@Overwrite
public String toString() {
return "";
}
我现在想要做的事情是如何能获取到"Overwrite"这个值.纠结很久了.希望大哥们帮帮小弟.
因为现在做的项目日本那面把数据库事务开关.封装成了一个Annotation .要开事务的时候
只要在方法上加一个注解就可以了.我想知道他怎么实现的.
------解决方案--------------------
Overwrite这类的注解是没办法获取的,因为他不是@Retention(RetentionPolicy.RUNTIME)的,所以在运行期间是没办法获取到的。但是如果注解是@Retention(RetentionPolicy.RUNTIME)的,那么就可以获取到。代码如下:
- Java code
public static void main(String[] args)throws Exception { Class c = Class.forName("test.T"); Method method = c.getDeclaredMethod("say", new Class[]{}); Annotation[] as = method.getAnnotations(); for(Annotation a : as){ System.out.println(a.annotationType().getSimpleName()); } }
------解决方案--------------------
一个系统是没有办法解释自身的,必须借助外面的系统来描述自身,也就是说任何一个系统都不是完备的, 如果它完备,它就是自相矛盾的。