精华内容
下载资源
问答
  • 反射获取父类私有字段

    千次阅读 2019-03-19 16:08:15
    //获取所有私有字段 for ( Field field : fields ) { field . setAccessible ( true ) ; param . put ( field . getName ( ) , field . get ( t ) == null ? "" : field . get ( t ) ) ; ...
    	@Test
        public void myTest() {
            CustomerApiInfoReqDtoNew t = new CustomerApiInfoReqDtoNew();//改成你要操作的子类
            Class className = t.getClass();
            Map<String, Object> param = new HashMap<>();
            try{
                for (; className != Object.class; className = className.getSuperclass()) {//获取本身和父级对象
                    Field[] fields = className.getDeclaredFields();//获取所有私有字段
                    for (Field field : fields) {
                        field.setAccessible(true);
                        param.put(field.getName(), field.get(t) == null ? "" : field.get(t));
                    }
                }
                System.out.print(JsonUtil.toJson(param));//打印子类和父类所有字段,注意:JsonUtil改成你自己的json解析工具
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    
    展开全文
  • 调用私有方法 public class PrivateMethod { private String sayHello(String name) { return "hello "+name; } } 测试 package com.java.test; import java.lang.reflect.Method; public class ...

    调用私有方法

    public class PrivateMethod {
    
        private String sayHello(String name) {
            return "hello "+name;
        }
    }

    测试

    package com.java.test;
     
    import java.lang.reflect.Method;
     
    public class PrivateMethodTest {
     
        public static void main(String[] args)throws Exception {
            PrivateMethod  p = new PrivateMethod();
             
            Class<?> classType = p.getClass();
             
            Method method = classType.getDeclaredMethod("sayHello", new Class[]{String.class});
             
            method.setAccessible(true);//压制java的检查机制
             
            String str = (String)method.invoke(p, new Object[]{"lzyer"});
             
            System.out.println(str);
        }
    }

     

    修改私有属性

    public class PrivateField{
     
        private String name="zhangsan";
         
        public String getName() {   
            return this.name;
        }
    }

    测试

    package com.java.test;
     
    import java.lang.reflect.Field;
     
    public class PrivateFieldTest {
     
        public static void main(String[] args)throws Exception {
            PrivateField p = new PrivateField();
             
            Class<?> clazz = p.getClass();
             
            Field field = clazz.getDeclaredField("name");
             
            field.setAccessible(true);//压制java检查机制
             
            field.set(p, "lisi");
             
            System.out.println(p.getName());
        }
    }

     

    获取父类私有字段

    @Test
    public void myTest() {
        CustomerApiInfoReqDtoNew t = new CustomerApiInfoReqDtoNew();//改成你要操作的子类
        Class className = t.getClass();
        Map<String, Object> param = new HashMap<>();
        try{
            for (; className != Object.class; className = className.getSuperclass()) {//获取本身和父级对象
                Field[] fields = className.getDeclaredFields();//获取所有私有字段
                for (Field field : fields) {
                    field.setAccessible(true);
                    param.put(field.getName(), field.get(t) == null ? "" : field.get(t));
                }
            }
            System.out.print(JsonUtil.toJson(param));//打印子类和父类所有字段,注意:JsonUtil改成你自己的json解析工具
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    展开全文
  • 备忘一下,拿Field的时候要用getClass().getSuperclass()来获取Field: Field f= getClass().getSuperclass().getDeclaredField("sqlSessionFactory"); f.setAccessible(true); ssf= (SqlSessionFactory) f.get(this...

    备忘一下,拿Field的时候要用getClass().getSuperclass()来获取Field:

    Field f= getClass().getSuperclass().getDeclaredField("sqlSessionFactory");
    f.setAccessible(true);
    ssf= (SqlSessionFactory) f.get(this);
    
    展开全文
  • 通过反射获取父类私有成员变量

    千次阅读 2019-09-19 10:19:19
    // 获取当前对象的所有属性字段 // getFields():获取public修饰的字段 // getDeclaredFields()获取所有的字段包括private修饰的字段 Field [ ] f = aClass . getDeclaredFields ( ) ; Stream < Field ...
    import jdk.nashorn.internal.ir.Expression;
    import java.lang.reflect.Field;
    import java.util.Arrays;
    import java.util.stream.Stream;
    class A{
        private int i=0;
        private String str="jvnqiwnh1";
        public char c='c';
    }
    public class Main{
        public static void main(String[] args) {
            A a=new A();
            try{
                Class<A> aClass = A.class;
                // 获取当前对象的所有属性字段
                // getFields():获取public修饰的字段
                // getDeclaredFields()获取所有的字段包括private修饰的字段
                Field[] f = aClass.getDeclaredFields();
                Stream<Field> stream = Arrays.stream(f);
                stream.forEach(filed -> filed.setAccessible(true));
                for (Field field : f) {
                    System.out.println(field.get(a));
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
    

    DeBug看一下f中的数据 类中的所有成员变量都已经拿到;
    在这里插入图片描述

    展开全文
  • 按照循环渐进的方式,接下来,介绍反射类中属性和普通的方法。 在这里简单介绍,反射调用属性和方法会用到的新类,Method类和Field类。 Method类的常用API: getModifiers() : 获取方法的修饰符 getName(): 获取...
  • //获取所有私有字段 for (Field field : fields) { field.setAccessible( true ); param.put(field.getName(), field. get (t)== null ? "" :field. get (t)); } } return param; }
  • 反射得到父类私有字段并且赋值

    千次阅读 2018-03-14 10:24:58
    有些时候,有些jar 包里面的一个方法,我们想要改。...但是,有一个问题,父类的很多字段都是私有的,private的,我们需要通过反射得到。参考:http://blog.csdn.net/qq_32452623/article/details/54025185...
  • 要求:获取父类私有id的属性值(传进来的是一个泛型T) 反射流程,是先获取到class对象,然后通过Field来获取对象的属性方法 常用的方法是: getFields 可以获取自身和继承公共的属性 getDeclaredFields 可以...
  • 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加 新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通过使用继承我们能够非常方便地复用以前的代码。 正文 public class ...
  • 反射的方式获取父类中的所有属性和方法、 (来自知乎)Unity反射机制的理解 1、反射是动态执行的(和oc的动态性类似),使用反射是开销非常大的调用方式,效率会比直接引用低,也可能会存在很多的异常,用时需...
  • java反射机制获取父类属性

    万次阅读 2019-01-10 10:41:27
    首先查看反射机制如何获取类的方法的: Class clazz = object.getClasss(); clazz.getDeclareFields(); Calzz.getFields(); 通过getClass()方法来获取类的定义信息,通过定义信息再调用getFields()方法来获取类的...
  • 答案是可以。 一次电话面试中被问到这个问题,当时答... 另外,有的项目里的基类就是把一些公共属性放在基类里,然后有需要的类可以继承基类,这样 有需要的类即有了基类(父类)的属性,也有了自己的属性
  • 看一段数据库中的表转化成用户可以看懂的数据,也就是把一些字段比如Date用ms存的,转化为'yyyy-MM-dd'这种格式,但是由于字段太多,所以利用Java反射机制自带的BeanUtils相关的方法来进行转化(要求两个类的属性名称相同...
  • 俗话说:反射反射,程序猿的快乐。特意转载这篇文章,当做学习笔记 原文链接 Java代码  package com.syh.jdbc.reflection_super;    /**   * 父类   * @author syh   *   */    public class ...
  • Java反射获取private属性和方法(子类,父类,祖先….)先来看一个例子:String可变还是不可变?大家都应该知道,或者听过,String类是不可变的,为什么呢?因为String其实使用一个 private final char [] value;来...
  • Java语言中,子类是不能访问父类的私有成员的,...所以所谓的继承使子类拥有父类所有的属性和方法其实可以这样理解,子类对象确实拥有父类对象中所有的属性和方法,但是父类对象中的私有属性和方法,子类是无法访...
  • clazz.getFields()获取成员变量2、 clazz.getDeclaredFields()获取当前类的所有属性3、 clazz.getMethods()获取当前对象及父类对象的所有公共方法4、 clazz.getDeclaredMethods()获取当前类中所有的方法5、反射 ...
  • Java 通过反射获取父类字段的方法

    千次阅读 2018-04-24 17:00:16
    public static < T > T convertJsonRequestToVo...1、java反射获取父类属性的值 https://blog.csdn.net/Mingyueyixi/article/details/51164061 2、 Java-Reflection反射-获取包括父类在内的所有字段 ...
  • 1.定义父类属性和方法 //父类 public class Parent { public String publicField = "1"; String defaultField = "2"; protected String protectedField = "3"; private String privateField = "4"; public...
  • package com.syh.jdbc.reflection_super;/** * 父类 * @author syh * */public class Parent { public String publicField = "1"; String defaultField = "2"; protected String protectedField = "3";
  • 后端开发 - Java反射获取类的所有的属性父类的所有属性 文章目录问题getDeclaredFieldsgetFields思路编码官方文档:getDeclaredFieldsgetFields 问题 想获取一个类的所有属性父类的所有属性 看一下官方文档中...
  • /** * logger 日志 */ private static Logger logger = LoggerFactory.... * 根据属性名称获取对象值 * @param object 对象 * @param fieldName 属性名 * @return */ public static Object getPropertyValue.
  • 反射得到父类私有字段

    千次阅读 2017-07-26 15:46:58
    有些时候,有些jar 包里面的一个方法,我们想要改。...但是,有一个问题,父类的很多字段都是私有的,private的,我们需要通过反射得到。参考:http://blog.csdn.net/qq_32452623/article/details/54025185g
  • 反射获取私有属性

    2020-09-14 14:34:53
    field[index].setAccessible(true),将私有属性变量设置为可访问的(打破了私有不可访问的规则); 2.1. field[index].get(类的实例),获取变量值。 public class MyTestBean { private String testStr; ...
  • 当时也想到可以通过反射的方式来获取父类私有属性的值。一开始使用getDeclaredFileds(),但发现只能获取子类的相关的属性对象。具体代码如下: 通过 getDeclaredFileds()方法获取属性对象 父类: public...
  • 通常子类是不能访问父类私有的成员变量及私有的方法,哪怎么才能做到呢?利用反射可以很容易的做到,以下代码在unity中测试通过; 定义一个父类:using UnityEngine; using System.Collections; public class ...
  • * 获取父类中的所有属性和方法 工具类 * @author zhangwenchao * */ public class SuperClassReflectionUtils { /** * 循环向上转型, 获取对象的 DeclaredMethod * @param object : 子类对象 * @param ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,146
精华内容 9,658
关键字:

反射获取父类私有属性