自定义annotation的运行时动态加载
2008-09-05 12:31
155 查看
需要使用Java的反射机制才能实现。演示代码如下:
AnnotationDemo.java
package demo.annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface AnnotationDemo {
public String value();
}
AnnotationUsage.java
package demo.annotation;
public class AnnotationUsage {
@AnnotationDemo(value="hello world")
public void method(String value)
{
System.out.println(value);
}
}
AnnotationTest.java
package demo.annotation;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class AnnotationTest {
public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
Method[] methods = AnnotationUsage.class.getDeclaredMethods();
for (Method method : methods) {
if (method.isAnnotationPresent(AnnotationDemo.class)) {
AnnotationDemo annotationTest = method.getAnnotation(AnnotationDemo.class);
method.setAccessible(true);
method.invoke(new AnnotationUsage(), annotationTest.value());
}
}
}
}
AnnotationDemo.java
package demo.annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface AnnotationDemo {
public String value();
}
AnnotationUsage.java
package demo.annotation;
public class AnnotationUsage {
@AnnotationDemo(value="hello world")
public void method(String value)
{
System.out.println(value);
}
}
AnnotationTest.java
package demo.annotation;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class AnnotationTest {
public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
Method[] methods = AnnotationUsage.class.getDeclaredMethods();
for (Method method : methods) {
if (method.isAnnotationPresent(AnnotationDemo.class)) {
AnnotationDemo annotationTest = method.getAnnotation(AnnotationDemo.class);
method.setAccessible(true);
method.invoke(new AnnotationUsage(), annotationTest.value());
}
}
}
}
相关文章推荐
- 动态链接库DLL的加载:隐式加载(载入时加载)和显式加载(运行时加载)
- java动态加载jar包,并运行其中的类和方法
- 利用反射动态(运行时)加载窗体
- DLL运行期间动态加载
- 异步动态加载JS 并运行
- Android 自定义加载Dialog 运行效果流畅
- (转)高性能JavaScript:加载和运行(动态加载JS代码)
- 如何运行时(动态)加载js脚本|JavaScript
- Spring 运行中 动态加载xml并实例化Bean
- 游戏服务器动态加载Java代码脚本运行
- 自定义动态loading界面——仿饿了么动态加载
- 使用自定义annotation接口进行aspectj动态缓存
- 使用sxstrace.exe调试Windows应用程序运行时动态链接库的加载异常
- Android 自定义Dialog,文字动态加载效果。
- 使用javassist运行时动态重新加载java类及其他替换选择
- 使用自定义annotation接口进行aspectj动态缓存
- 自定义CursorAdapter,实现ListView中动态加载button,和点击事件
- JAVA1.6实现动态编译加载运行
- 自定义View模拟下载/加载动态progress
- [置顶] Android 自定义view之 Xfermode 制作动态文字加载动画