Android 中利用反射访问private修饰的字段和方法
来源:互联网 发布:cms系统开发教程 编辑:程序博客网 时间:2024/05/22 00:19
前几天在项目中突然要改动三方集成的样式,但是三方都在jar包中,所以就考虑用反射来访问而且是访问私有的,废话不多说直接上代码:很简单的两个方法
首先看一下我这个Activity里面的代码
public class FanSheActivity extends AppCompatActivity { private TextView mName; private TextView mAddress; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fan_she); mName = (TextView) findViewById(R.id.id_name); mAddress = (TextView) findViewById(R.id.id_address); /**下面我们通过发射来拿到FanShePresenter里面的private修饰变量和方法*/ getNameText(); showgetProsenaddress(); } /** * 我们首先来拿到private修饰的字段name */ public void getNameText() { Field f; String name = null; FanShePresenter mFanShePresenter = new FanShePresenter(this); Class temp = mFanShePresenter.getClass(); try { f = temp.getDeclaredField("name"); f.setAccessible(true); name = (String) f.get(mFanShePresenter); } catch (Exception e) { e.printStackTrace(); } mName.setText(name); } /** * 调用private修饰的方法getProsenaddress() */ public void showgetProsenaddress() { Method method = null; FanShePresenter mFanShePresenter = new FanShePresenter(this); Class temp = mFanShePresenter.getClass(); try { method = temp.getDeclaredMethod("getProsenaddress", null); method.setAccessible(true); method.invoke(mFanShePresenter, null); } catch (Exception e) { e.printStackTrace(); } }}
下面是要访问的类文件
/** * */public class FanShePresenter { private String name; public String address; public Context mContext; public FanShePresenter(Context mContext) { this.name = "奥巴马"; this.address = "美国五角大楼"; this.mContext = mContext; } public void getProsenName() { Toast.makeText(mContext, "习大大", Toast.LENGTH_LONG).show(); } private void getProsenaddress() { Toast.makeText(mContext, "北京天安门", Toast.LENGTH_LONG).show(); }}
1 0
- Android 中利用反射访问private修饰的字段和方法
- 【转载】JAVA利用反射机制访问private成员和方法
- java中利用反射调用另一类的private方法
- java利用反射访问类的私有(private)属性及方法
- Java 中访问修饰符public,private,protected和default(friendly) 的区别
- Java中private、protected、public和default修饰符的访问限制
- java 反射 访问private 方法
- private和final修饰方法
- Java 反射访问私有方法和字段
- Java中利用反射对类的hidden成员方法和属性的访问
- 利用反射机制操作私有成员变量(private修饰的变量)
- JAVA方法访问修饰和类的成员访问修饰
- 构造方法的”和用private修饰的权限
- Java private和protected修饰的内部类调用方法
- Scala访问权限修饰符:private和private[this]
- 访问修饰符private
- java反射机制访问private方法
- C#中利用反射操作私有字段与私有方法
- PHPexcel
- svn把老库进行分库操作
- AutoFac属性自动注入
- matlab和c++混合编程---Mex结构和mexFunction参数传递
- Java中泛型概括总结
- Android 中利用反射访问private修饰的字段和方法
- Set集合下的奇葩,TreeSet有序而且类型相同
- Android美工坊--底部菜单栏实现
- spring boot 学习--08---搭建ssmm-03
- My Book
- 详解匿名内部类
- kav管理1:如何打造一个说实话的团队
- Redis Session Manager for Apache Tomcat8
- 面试问题收藏