java反射9

来源:互联网 发布:手机访客网络怎么限速 编辑:程序博客网 时间:2024/06/06 03:30
package com.betasoft.reflect;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Target({ElementType.TYPE,ElementType.FIELD,ElementType.METHOD,ElementType.LOCAL_VARIABLE})@Retention(RetentionPolicy.RUNTIME)public @interface DefinationAnnotation {//定义两个成员变量String name() default "JACK";int age() default 20;}

package com.betasoft.reflect;@SuppressWarnings(value="unchecked")@DefinationAnnotationpublic class Student {private String name;private int age;public Student(){}@SuppressWarnings("unused")private Student(String name) {this.name = name;}public String getName() {return name;}@DefinationAnnotation(name="张三",age=20)public void setName(String name) {this.name = name;}private int getAge() {return age;}private void setAge(int age) {this.age = age;}protected String num(Integer a,String c){return c;}@Deprecatedpublic String num(String a){return a;}//内部类class inner{}}
package com.betasoft.reflect;import java.lang.annotation.Annotation;import java.lang.reflect.Method;public class AnnotationTest {public static void main(String[] args) {Class<Student> cla = Student.class;Annotation[] annotations = cla.getAnnotations();for(Annotation annotation : annotations){System.out.println("------------------");System.out.println(annotation.toString());}try {Method method = cla.getMethod("setName",String.class);Annotation[] anno = method.getAnnotations();for(Annotation a : anno){System.out.println(a.toString());if(a instanceof DefinationAnnotation){System.out.println(a instanceof DefinationAnnotation);//强制类型转换System.out.println(((DefinationAnnotation)a).name());System.out.println(((DefinationAnnotation)a).age());}}} catch (NoSuchMethodException | SecurityException e) {e.printStackTrace();}}}


0 0
原创粉丝点击