欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

浅谈Java的反射机制

程序员文章站 2024-02-09 18:06:06
...


浅谈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中被我们注解的属性值。

转载于:https://my.oschina.net/sunqiyao/blog/664409