本文主要是介绍反射得到父类的私有字段,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
有些时候,有些jar 包里面的一个方法,我们想要改。但是已经是打成了jar包,并且是别人的jar包。我们不想去反编译,然后重新打包的话,那么就重新写一个类去继承这个类,然后去改变里面的方法的实现。
但是,有一个问题,父类的很多字段都是私有的,private的,我们需要通过反射得到。
参考:http://blog.csdn.net/qq_32452623/article/details/54025185
getFields() 获取所有public字段,包括父类字段
getDeclaredFields() 获取所有字段,public和protected和private,但是不包括父类字段
我们想要获取父类的私有东西怎么办?
public static void setSuperField(Object paramClass, String paramString,Object newClass) {Field field = null;try {field = paramClass.getClass().getSuperclass().getDeclaredField(paramString);field.setAccessible(true);field.set(paramClass, newClass);} catch (Exception e) {e.printStackTrace();}return;}public static Object getSuperField(Object paramClass, String paramString) {Field field = null;Object object = null;try {field = paramClass.getClass().getSuperclass().getDeclaredField(paramString);field.setAccessible(true);object = field.get(paramClass);} catch (Exception e) {e.printStackTrace();}return object;}
getClass().getSuperclass().getDeclaredField(paramString);
多么奇妙啊。哈哈
这篇关于反射得到父类的私有字段的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!