美文网首页
反射基础

反射基础

作者: 岁月是首歌 | 来源:发表于2017-04-16 17:52 被阅读0次

    Class

          //得到Class类的对象
         User  user=new User();
         Class clazz=str.getClass(); 
          
         Class clazz=User.Class;
    
         Class clazz=Class.forName("bao.User");
    

    Field(得到属性)

        //获得类的单个属性
       Field field = clazz.getDeclaredField("name");
       Class type = field.getType();//获得属性的方法
    
       Field[] fields = clazz.getDeclaredFields();//获得类的所有属性
       for (Field field2 : fields) {
       System.out.println(field2.getName());//获得属性的名称
        }
    
    

    SetField(设置属性)

      User user = (User)clazz.newInstance();//得到Class对象的一个实体
                field.setAccessible(true);//打破java访问权限
                field.set(user,"李四");//设置属性值
                
    

    Map

        public  Object people(Class clazz,HashMap map){
            try {
                Field[] fields = clazz.getDeclaredFields();
                User user = (User) clazz.newInstance();
                Set set = map.entrySet();
                Iterator iterator = set.iterator();
                while (iterator.hasNext()) {
                    Entry entry = (Entry) iterator.next();
                    String key = (String) entry.getKey();
                    Object value = map.get(key);
                    for (Field field : fields) {
    
                        if (field.getName().equals(key)) {
                            field.setAccessible(true);
                            field.set(user, value);
                        }
                    }
                }
               return user;
            } catch (Exception e) {
                e.printStackTrace();
            }
         return null;
        }
    //通过map集合赋值User集合所有的对象                                                         
          public ArrayList<User> people(Class clazz, ArrayList<HashMap> list)
                throws InstantiationException, IllegalAccessException {
            Field[] fields = clazz.getDeclaredFields();
            ArrayList<User> list2 = new ArrayList<User>();
            for (int i = 0; i < list.size(); i++) {
                User user = (User) clazz.newInstance();
                for (Field field : fields) {
                    String key = field.getName();
                    Object object = list.get(i).get(key);
                    field.setAccessible(true);
                    field.set(user, object);
                }
                list2.add(user);
            }
            return list2;
        }   
    

    Method(得到类的方法)

            Method method = clazz.getDeclaredMethod("show",String.class); //方法加入参数
            method.invoke(object, "磊少");     
    

    Constructor(使用类的构造方法)

            Class clazz = User.class;
            Constructor constructor = clazz.getDeclaredConstructor(String.class,int.class);//得到构造方法
            Object object = constructor.newInstance("磊少", 18);//得到构造方法的实体类
            System.out.println(object);
    

    相关文章

      网友评论

          本文标题:反射基础

          本文链接:https://www.haomeiwen.com/subject/pnwaattx.html