黑马程序员技术交流社区
标题:
Annotation
[打印本页]
作者:
李井山
时间:
2012-3-27 15:50
标题:
Annotation
Annotation的视频我看了,讲了注解的位置,持续时间和属性,但我还是不知道注解和他所修饰的属性,方法什么的有什么关系啊?
作者:
yangshang1
时间:
2012-3-27 17:39
利用Annotation可以进行反射
先定义
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation
{
String hello() default "shengsiyuan";
String world();
}
作者:
yangshang1
时间:
2012-3-27 17:40
@MyAnnotation(hello = "beijing", world = "shanghai")
public class MyTest
{
@MyAnnotation(hello = "tianjin", world = "shangdi")
public void output()
{
System.out.println("output something!");
}
}
在应用Anntation
作者:
yangshang1
时间:
2012-3-27 17:40
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
public class MyReflection
{
public static void main(String[] args) throws Exception
{
MyTest myTest = new MyTest();
Class<MyTest> c = MyTest.class;
Method method = c.getMethod("output", new Class[]{});
if(method.isAnnotationPresent(MyAnnotation.class))
{
method.invoke(myTest, new Object[]{});
MyAnnotation myAnnotation = method.getAnnotation(MyAnnotation.class);
String hello = myAnnotation.hello();
String world = myAnnotation.world();
System.out.println(hello + ", " + world);
}
Annotation[] annotations = method.getAnnotations();
for(Annotation annotation : annotations)
{
System.out.println(annotation.annotationType().getName());
}
}
}
测试一下
结果是
output something!
tianjin, shangdi
MyAnnotation
作者:
yangshang1
时间:
2012-3-27 17:45
还有在junit4中也是用的注解
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2