精华内容
下载资源
问答
  • public static <T>void fatherToChild(T father,T child) throws Exception { if (child.getClass().getSuperclass()!=father.getClass()){ throw new Exception("child 不是 father 的子类");...
    public static <T>void fatherToChild(T father,T child) throws Exception {
           if (child.getClass().getSuperclass()!=father.getClass()){
               throw new Exception("child 不是 father 的子类");
           }
           Class<?> fatherClass = father.getClass();
           Field[] declaredFields = fatherClass.getDeclaredFields();
           for (int i = 0; i < declaredFields.length; i++) {
               Field field=declaredFields[i];
               if(field.getName().equals("serialVersionUID")) {
                   continue;
               }
               Method method=fatherClass.getDeclaredMethod("get"+upperHeadChar(field.getName()));
               Object obj = method.invoke(father);
               field.setAccessible(true);
               field.set(child,obj);
           }
       }
    
       /**
        * 首字母大写,in:deleteDate,out:DeleteDate
        */
       public static String upperHeadChar(String in) {
           String head = in.substring(0, 1);
           String out = head.toUpperCase() + in.substring(1, in.length());
           return out;
       }
    public class N2 extends N1{
    
    	/**
    	 * 
    	 */
    	
    	private String re;
    	
    	private Integer us;
    
    }
    

     

    展开全文
  • java反射机制操作父类的所有属性和方法。
  • java反射获取父类和子类字段值、赋值 import org.springframework.util.ReflectionUtils; import java.lang.reflect.Field; import java.util.*; public static void setValueByPropName(String tar, Object o, ...

    java反射获取父类和子类字段值、赋值

    import org.springframework.util.ReflectionUtils;
    
    import java.lang.reflect.Field;
    import java.util.*;
    
    
    public static void setValueByPropName(String tar, Object o, Object val, Class clazz) {
        Field field = getFiled(tar, clazz);
        field.setAccessible(true);
        ReflectionUtils.setField(field, o, val);
    }
    
    public static Field getFiled(String tar, Class clazz) {
        String error = null;
        Field field = null;
        while (clazz != null) {
            try {
                field = clazz.getDeclaredField(tar);
                error = null;
                break;
            } catch (Exception e) {
                clazz = clazz.getSuperclass();
                error = e.getMessage();
            }
        }
        if (error != null || field == null) {
            throw new RuntimeException("无法获取源字段:" + tar);
        }
        return field;
    }
    
    
    public static Object getValueByPropName(String filedName, Object o, Class clazz) {
        Field field = getFiled(filedName, clazz);
        field.setAccessible(true);
        return ReflectionUtils.getField(field, o);
    }
    
     
    

    调用方式:

    // 获取id的值
    Object var = getValueByPropName(“id”, a, clazz);

    // 赋值name -> lisi
    setValueByPropName(“name”, a, “lisi”, clazz);

    展开全文
  • /** * 获取属性 * @param clazz * @param fieldName * @return */ public static Field getDeclaredField(Class clazz, String fieldName) { if (Strings.isNullOrEmpty(fieldName)) { return null;...
        /**
         * 获取属性
         * @param clazz
         * @param fieldName
         * @return
         */
        public static Field getDeclaredField(Class clazz, String fieldName) {
            if (Strings.isNullOrEmpty(fieldName)) {
                return null;
            }
            while (clazz != null) {
                try {
                    return clazz.getDeclaredField(fieldName);
                } catch (NoSuchFieldException e) {
    
                }
                clazz = clazz.getSuperclass();
            }
            return null;
        }

     

    展开全文
  • java反射获取父类字段

    2018-08-08 10:17:58
      getFields() 获取所有public字段,包括父类字段 getDeclaredFields() 获取所有字段,public和protected和private,但是不包括父类字段 由于我的项目中mybatis返回值中包含两个映...

    本文参考了https://blog.csdn.net/qq_32452623/article/details/54025185,感谢!

     

    getFields()获取所有public字段,包括父类字段
    getDeclaredFields()获取所有字段,public和protected和private,但是不包括父类字段
    由于我的项目中mybatis返回值中包含两个映射类且是父子关系,
    
    <resultMap id="BaseResultMap" type="com.bocom.entity.VioJdczp" >
      <id column="XH" property="xh" jdbcType="VARCHAR" />
      <result column="HPZL" property="hpzl" jdbcType="VARCHAR" />
      <result column="HPHM" property="hphm" jdbcType="VARCHAR" />
      <result column="LRSJ" property="lrsj" jdbcType="TIMESTAMP" />
    </resultMap>
    <resultMap id="ResultMapWithBLOBs" type="com.bocom.entity.VioJdczpWithBLOBs" extends="BaseResultMap" >
      <result column="PHOTO1" property="photo1" jdbcType="BLOB" />
      <result column="PHOTO2" property="photo2" jdbcType="BLOB" />
      <result column="PHOTO3" property="photo3" jdbcType="BLOB" />
    </resultMap>
    要想把返回值组装在一个东西里,且按照entity的字段顺序来排列,就需要用到反射。
    本方法可以讲所有父类字段的值获取到,代码如下:
    
    /**
     * 递归获取包括父类在内的
     * 所有字段,拼成buffer
     *
     * @param bean
     * @param buffer
     * @return
     * @throws ReflectiveOperationException
     */
    public static void AllFieldsToXml(Object bean, StringBuffer buffer) throws ReflectiveOperationException {
        Class tempClass = bean.getClass();
        //当父类为null说明到达最上层父类Object
        while (tempClass != null && !tempClass.getName().toLowerCase().equals("java.lang.object")) {
            Field[] fields = tempClass.getDeclaredFields();
            for (int i = 0; i < fields.length; i++) {
                String fieldName = fields[i].getName();
                String getter = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
                Method method = tempClass.getMethod(getter);
                Object value = method.invoke(bean);
                if (value instanceof Date) {
                    value = DateFormatUtils.format((Date) value, FORMATSTRING);
                }
                buffer.append("\n   <").append(fieldName).append(">");
                buffer.append(value);
                buffer.append("</").append(fieldName).append(">");
            }
            tempClass = tempClass.getSuperclass();  //父类赋给自己
        }
    }
    展开全文
  • 备忘一下,拿Field的时候要用getClass().getSuperclass()来获取Field: Field f= getClass().getSuperclass().getDeclaredField("sqlSessionFactory"); f.setAccessible(true); ssf= (SqlSessionFactory) f.get(this...
  • java反射 获取父类中的所有属性和方法工具类
  • Java反射获取父类中的元素

    千次阅读 2017-01-06 19:08:45
    我们知道,可以通过getDeclaredField和getField方法可以反射获取class中的元素,他们的区别在于getField只能访问公有变量,而getDeclaredField则可以访问定义的所有变量,包括protected修饰和private修饰的变量。...
  • Java反射查找父类方法

    千次阅读 2012-11-16 16:39:21
    /*** * 获得一个类的方法的值 * @param invoke 执行对象 * @param methodName 方法名称 * @return */ private Object getValue(Object invoke,String methodName){ //执行后返回对象 ...
  • Java 反射机制 父类私有字段处理

    千次阅读 2018-03-25 13:04:39
    所有基本类型均可通过其包装类型的TYPE获取Class.getSuperclass()获取父类的class对象Class.getClasses...
  • 要求:获取父类的私有id的属性值(传进来的是一个泛型T) 反射流程,是先获取到class对象,然后通过Field来获取对象的属性方法 常用的方法是: getFields 可以获取自身和继承公共的属性 getDeclaredFields 可以...
  • 在做网站开发的时候我们都会写一个控制器,控制器的作用就是接收客户端的请求,有时候为了控制访问入口的唯一性,方便我们监控用户访问的数据;...1.定义一个抽象类作为所有控制器的父类 package thread; ...
  • MyGenericType.java ; font-family:Consolas;color:#7F0055;mso-font-kerning:0pt;" >package generic;;font-family:
  • Java获取父类的类名

    千次阅读 2015-03-28 22:55:40
    Java获取父类的类名
  • Java反射技术详解

    万次阅读 多人点赞 2019-04-14 23:11:32
    相信很多人都知道反射可以说是Java中最强大的技术了,它可以做的事情太多太多,很多优秀的开源框架都是通过反射完成的,比如最初的很多注解框架,后来因为java反射影响性能,所以被运行时注解APT替代了,java反射有...
  • 为什么80%的码农都做不了架构师?>>> ...
  • 使用反射的方式调用 父类调用子类的静态方法 package Quote; public class demo { public static void main(String[] args) { Son son = new Son(); Father father = new Father(son); ...
  • Java父类怎么调用子类的方法?

    万次阅读 2016-10-24 22:41:38
    ● 使用反射的方式调用,你使用了反射还有谁不能调用的?! ● 父类调用子类的静态方法。 案例展示: package com.ywq; public class Test2{ public static void main(String[] args) { Son son = ...
  • java反射获取父类和本类属性并赋值

    千次阅读 2019-03-30 21:01:07
    // Map --> Bean 1: 利用Introspector,PropertyDescriptor实现 Map --> Bean public static <T> T transMap2Bean(Map<String, Object> map, T t) { try { BeanInfo beanInfo = Introspec...
  • java反射机制获取父类属性

    万次阅读 2019-01-10 10:41:27
    首先查看反射机制如何获取类的方法的: Class clazz = object.getClasss(); clazz.getDeclareFields(); Calzz.getFields(); 通过getClass()方法来获取类的定义信息,通过定义信息再调用getFields()方法来获取类的...
  • getMethods():能够获取类的所有public方法,包括自身定义的以及从父类继承的。 getDeclaredMethods():能够获取类本身的所有方法,包括private方法,实现的接口方法,但是不能获取从父类继承的方法。 因此...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 95,648
精华内容 38,259
关键字:

java反射父类

java 订阅