浅谈Java的反射机制

来源:互联网 发布:启凡网络 编辑:程序博客网 时间:2024/05/07 13:30


浅谈Java的反射机制

通过类的.class文件生成该类对象

如下:

UserManager u = (UserManager)ClassUtil.initClass(UserManager.class);


实现:

public class ClassUtil {public static Object initClass(Class<? extends Object> c) throwsInstantiationException, IllegalAccessException     {          returnc.newInstance();     }}


自定义注解利用反射找到被注解标记的属性

1定义一个UserId的注解:

@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface UserId { }


2在我们的类中标识要找的属性:

public class Info {        @UserId        publicint id;}


3利用反射找到该类被自定义注解标识的属性

public static int getUseId(Object obj){        Field[]fields=obj.getClass().getFields();        for(Fieldf:fields)        {               if(f.getAnnotation(UserId.class)!=null){                       f.setAccessible(true);                       try{                              id=f.getInt(obj);                       }catch (IllegalAccessException e) {                              e.printStackTrace();                       }catch (IllegalArgumentException e) {                              e.printStackTrace();                          }                  }        }        returnid;}


4使用方式

Info info=new Info();info.id=10010;int id=ClassUtil.getUseId(info);


返回的id就是info中被我们注解的属性值。

1 0
原创粉丝点击