精华内容
下载资源
问答
  • 无法反射父类的属性

    千次阅读 2012-12-06 16:58:36
    unsigned int outCount, i;  objc_property_t *properties = class_copyPropertyList(clazz, &outCount); //反射出类的所有属性 无法反射父类的属性

    unsigned int outCount, i;

        objc_property_t *properties = class_copyPropertyList(clazz, &outCount);        //反射出类的所有属性

    无法反射父类的属性

    展开全文
  • 反射父类方法

    2016-09-23 09:58:50
    记录反射的代码片段
     /**
         * scroll Vertical
         */
        public void scrollVertical(final ListView listView, Activity activity, final int distance) {
            if (listView == null)
                return;
            activity.runOnUiThread(new Runnable() { //执行自动化测试的时候模拟滑动需要进入UI线程操作
                @Override
                public void run() {
                    invokeMethod(listView, "smoothScrollBy", new Object[]{distance, 0, true}, new Class[]{int.class, int.class, boolean.class});
                }
            });
        }
    
        /**
         * 遍历当前类以及父类去查找方法,例子,写的比较简单
         *
         * @param object
         * @param methodName
         * @param params
         * @param paramTypes
         * @return
         */
        public Object invokeMethod(Object object, String methodName, Object[] params, Class[] paramTypes) {
            Object returnObj = null;
            if (object == null) {
                return null;
            }
            Class cls = object.getClass();
            Method method = null;
            for (; cls != Object.class; cls = cls.getSuperclass()) { //因为取的是父类的默认修饰符的方法,所以需要循环找到该方法
                try {
                    method = cls.getDeclaredMethod(methodName, paramTypes);
                    break;
                } catch (NoSuchMethodException e) {
                    TAppLog.i("LG", e.getMessage());
    //             e.printStackTrace();
                } catch (SecurityException e) {
                    TAppLog.i("LG", e.getMessage());
    //             e.printStackTrace();
                }
            }
            if (method != null) {
                method.setAccessible(true);
                try {
                    returnObj = method.invoke(object, params);
                } catch (IllegalAccessException e) {
                    TAppLog.i("LG", e.getMessage());
                } catch (IllegalArgumentException e) {
                    TAppLog.i("LG", e.getMessage());
                } catch (InvocationTargetException e) {
                    TAppLog.i("LG", e.getMessage());
                }
            }
            return returnObj;
        }
    展开全文
  • 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;
    
    }
    

     

    展开全文
  • 反射调用父类方法

    千次阅读 2015-05-26 14:27:28
    * 今天和一位朋友谈到父类私有方法的调用问题,本来以为利用反射很轻松就可以实现 * 因为在反射看来根本不区分是否是private的,没有想到调用本 身的私有方法是可以的, * 但是调用父类的私有方法则不行,后来...
    /** 
    
    * 类 描 述 :

    * 修改备注:
    * 创建时间:Aug 22, 2014 11:37:31 AM
    * 今天和一位朋友谈到父类私有方法的调用问题,本来以为利用反射很轻松就可以实现
    * 因为在反射看来根本不区分是否是private的,没有想到调用本 身的私有方法是可以的,
    * 但是调用父类的私有方法则不行,后来纠其原因很有可能是因为getDeclaredMethod方法和getMethod方法并不
    * 会查找父类的私有方法,于是只好自己写递归了,经过尝试果然如此。把代码放出来方便更多人。
    * 这段代码可以解决很多实际问题,不过利用反射来做的话性能不会 太好。
    */
    public class PrivateUtil {
    /**
    * 利用递归找一个类的指定方法,如果找不到,去父亲里面找直到最上层Object对象为止。
    * @param clazz
    * 目标类
    * @param methodName
    * 方法名
    * @param classes
    * 方法参数类型数组
    * @return 方法对象
    * @throws Exception
    */
    public static Method getMethod(Class clazz, String methodName, final Class[] classes) throws Exception {
    Method method = null;
    try {
    method = clazz.getDeclaredMethod(methodName, classes);
    } catch (NoSuchMethodException e) {
    try {
    method = clazz.getMethod(methodName, classes);
    } catch (NoSuchMethodException ex) {
    if (clazz.getSuperclass() == null) {
    return method;
    } else {
    method = getMethod(clazz.getSuperclass(), methodName,classes);
    }
    }
    }
    return method;
    }

    /**
    *
    * @param obj
    * 调整方法的对象
    * @param methodName
    * 方法名
    * @param classes
    * 参数类型数组
    * @param objects
    * 参数数组
    * @return 方法的返回值
    */
    public static Object invoke(final Object obj, final String methodName,final Class[] classes, final Object[] objects) {
    try {
    Method method = getMethod(obj.getClass(), methodName, classes);
    method.setAccessible(true);// 调用private方法的关键一句话
    return method.invoke(obj, objects);
    } catch (Exception e) {
    throw new RuntimeException(e);
    }
    }

    public static Object invoke(final Object obj, final String methodName,final Class[] classes) {
    return invoke(obj, methodName, classes, new Object[] {});
    }

    public static Object invoke(final Object obj, final String methodName) {
    return invoke(obj, methodName, new Class[] {}, new Object[] {});
    }

    /**
    * 测试反射调用
    *
    * @param args
    */
    public static void main(String[] args) {
    PrivateUtil.invoke(new B(), "printlnA", new Class[] {String.class }, new Object[]{"test"});
    PrivateUtil.invoke(new B(), "printlnB");
    }
    展开全文
  • 反射通过父类反射出所有的子类

    千次阅读 2019-10-15 20:04:20
     * @introduce:根据父类的类文件获取所以的子类类文件集合,要求父类和子类在同一个包中,或者子类在子包中  */ public class ClassUtil {    @SuppressWarnings({ "unchecked", ...
  • java的反射机制操作父类的所有属性和方法。
  • 反射获取父类私有字段

    千次阅读 2019-03-19 16:08:15
    @Test public void myTest ( ) ... ...//打印子类和父类所有字段,注意:JsonUtil改成你自己的json解析工具 } catch ( Exception e ) { e . printStackTrace ( ) ; } }
  • 使用反射获取父类的泛型参数类型 代码如下 public class ReflectionUtils { /** * @Description:通过反射,获取class声明的父类的泛型参数类型 * 如:public B extends A<String> * @author linluor *...
  • java反射获取父类字段

    2018-08-08 10:17:58
      getFields() 获取所有public字段,包括父类字段 getDeclaredFields() 获取所有字段,public和protected和private,但是不包括父类字段 由于我的项目中mybatis返回值中包含两个映...
  • 利用反射父类赋值高效工具类案例,特别对扩展类进行数据持久化的时候或者是查询父类数据要赋值给扩展类时,这个工具类就非常高效高性能。避免许多冗余代码和重复IO读写;
  • 1、获取父类 // 获取父类 @Test public void test7(){ Class clazz = Person.class; final Type genericSuperclass = clazz.getGenericSuperclass(); System.out.println(genericSuperclass); } 2、获取...
  • package com.lmlm.dbutils; import java.io.IOException; import java.lang.reflect.Method; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet....
  • /** * 获取属性 * @param clazz * @param fieldName * @return */ public static Field getDeclaredField(Class clazz, String fieldName) { if (Strings.isNullOrEmpty(fieldName)) { return null;...
  • Java语言中,子类是不能访问父类的私有成员的,包括成员变量和方法,但可以通过Java的反射机制去访问。 其实在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,...
  • Java反射获取父类中的元素

    千次阅读 2017-01-06 19:08:45
    我们知道,可以通过getDeclaredField和getField方法可以反射获取class中的元素,他们的区别在于getField只能访问公有变量,而getDeclaredField则可以访问定义的所有变量,包括protected修饰和private修饰的变量。...
  • java反射获取父类和子类字段值、赋值 import org.springframework.util.ReflectionUtils; import java.lang.reflect.Field; import java.util.*; public static void setValueByPropName(String tar, Object o, ...
  • Java反射查找父类方法

    千次阅读 2012-11-16 16:39:21
    /*** * 获得一个类的方法的值 * @param invoke 执行对象 * @param methodName 方法名称 * @return */ private Object getValue(Object invoke,String methodName){ //执行后返回对象 ...
  • Class &lt;T&gt; entityClass = (Class &lt;T&gt;) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];  
  • 通过反射设置父类属性值

    千次阅读 2020-03-23 20:02:54
    实际开发中有时候需要使用反射进行属性赋值 【详解】 package com.it.domain; import lombok.Data; @Data public class Person { private String name; private int age; } package com.it.domain; import ...
  • 有些时候,有些jar 包里面的一个方法,我们想要改。但是已经是打成了jar包,并且是别人的jar包...但是,有一个问题,父类的很多字段都是私有的,private的,我们需要通过反射得到。 参考:http://blog.csdn.net/qq_...
  • 使用反射父类属性赋值为字类属性 第一次使用csdn,小白一个 在开发的时候遇到过一个这样的一个问题,我要在实体中添加一个对象属性,但是又不想在在原来的实体上添加代码. ##于是就创建了一个子类来继承原来的实体,在...
  • 获取父类泛型类型步骤: 1 获取当前类的父类类型,即为参数化类型   Type type=this().getGenericSuperClass(); 2 将Type接口转换为ParameterizedType类型 ParameterizedType pm=(ParameterizedType) type; ...
  • 备忘一下,拿Field的时候要用getClass().getSuperclass()来获取Field: Field f= getClass().getSuperclass().getDeclaredField("sqlSessionFactory"); f.setAccessible(true); ssf= (SqlSessionFactory) f.get(this...
  • 在做网站开发的时候我们都会写一个控制器,控制器的作用就是接收客户端的请求,有时候为了控制访问入口的唯一性,方便我们监控用户访问的数据;...1.定义一个抽象类作为所有控制器的父类 package thread; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 109,089
精华内容 43,635
关键字:

反射父类