利用JAVA反射机制实现调用私有方法

1.fragment是AccessibilityFragment的對象。须要被調用的方法的類。

setAccessible(true)并非将方法的訪问权限改成了public。而是取消java的权限控制检查。所以即使是public方法。其accessible属相默认也是false

try {

Class mClass = Class.forName("com.sonymobile.chameleon.workflow.step.AccessibilityFragment");

Method method = mClass.getDeclaredMethod("isAccessibilityEnabled");

method.setAccessible(true);

if(!Boolean.parseBoolean((method.invoke((Object)fragment,null)+""))) {

method = mClass.getDeclaredMethod("enableAccessibility");

method.setAccessible(true);//私有方法

method.invoke((Object)fragment,null);//調用方法,null:爲傳遞的参數

                //method.invoke((Object)getService(),new Object[]{getContext()});帶参方法

}

} catch (ClassNotFoundException e) {

Log.d(TAG, "1");

e.printStackTrace();

} catch (NoSuchMethodException e) {

Log.d(TAG, "2");

e.printStackTrace();

} catch (IllegalAccessException e) {

Log.d(TAG, "3");

e.printStackTrace();

} catch (IllegalArgumentException e) {

Log.d(TAG, "4");

e.printStackTrace();

} catch (InvocationTargetException e) {

Log.d(TAG, "5");

e.printStackTrace();

}

时间: 2024-12-20 08:47:58

利用JAVA反射机制实现调用私有方法的相关文章

利用java反射机制 读取配置文件 实现动态类加载以及动态类型转换

作者:54dabang 在spring的学习过程之中,我们可以看出通过配置文件来动态管理bean对象的好处(松耦合 可以让零散部分组成一个整体,而这些整体并不在意之间彼此的细节,从而达到了真正的物理上的疏散耦合,而非逻辑,有了IOC之后,我们可以让SPRING充当各框架中的整合器,把技术框架进行完美的结合). Spring实现的一个重要的机制是通过反射(java.lang.reflect)读取配置文件,通过配置文件来动态生成配置文件中的类对象.Java动态加载类主要是为了不改变主程序代码,通过修

利用Java反射机制和泛型,全自动解析json

有啦这个简直,太爽啦, 利用Java 反射机制,利用Class 就可以得到 类的 变量  Field[] fields=cls.getDeclaredFields(); 还可以通过类中 的方法名字 去执行这个方法 m1 = cls.getDeclaredMethod(getMothodName(fields[j].getName()), String.class); m1.invoke(result,json.getString(fields[j].getName()) ); 利用泛型 去获取这

利用Java反射机制完成XML到对象的解析

对于一些小批量的数据,如果采用数据库来存取的话,未免有点大题小作,使用XML文件是个不错的方法,尤其是在一些Web应用中,经常需要缓存一部分数据,如果将这些数据形成XML文件,解析后放入一个Hashtable,那就能大大加快访问的速度. 由于工作的需要,写了一个解析工具,将XML解析成相应的对象列表.以下是源代码,希望对大家有所帮助,更希望大家帮我来改进这个工具. package com.sp.util; /* * author:hingwu * email:[email protected]

java反射机制(访问私有字段和私有方法)

来自:http://tutorials.jenkov.com/java-reflection/private-fields-and-methods.html 尽管我们通常认为通过JAVA的反射机制来访问其它类的私有字段和私有方法是可行的,其实并没有那么困难. 注释:只有在单独的JAVA程序中运行该代码才有效,就像你做一些单元测试或者常规的程序.如果你尝试在JAVA APPLET内使用该方法,你需要稍稍修改SecurityManager.但是,因为你不是经常需要与它打交道,这里也就不再赘述了. 这

利用java反射机制实现读取excel表格中的数据

如果直接把excel表格中的数据导入数据库,首先应该将excel中的数据读取出来. 为了实现代码重用,所以使用了Object,而最终的结果是要获取一个list如List<User>.List<Book>等,所以需要使用泛型机制去实现.下面会给出代码,可能会稍微复杂一点,但注释很清晰,希望大家耐心阅读. 在上代码之前简单说一下思路: 1.excel表格必须有表头,且表头中各列的值要与实体类的属性相同: 2.先读取表头信息,然后获取表头列数,接着确定需要使用的set方法的名称,并存到数

利用java 反射机制来实现一个servlet处理多种请求

如果我们想在一个servlet中处理多种请求(比如新闻的添加.删除),简单的可以在jsp提交表单的action路径中添加一个键值对,然后再servlet中接收后根据不同的值来调用不同的方法. jsp端 1 <form action="newsServlet?method=add" method="post"> 2 <input type="text" ..> 3 <input type="submit&qu

利用JAVA反射机制将JSON数据转换成JAVA对象

net.sf.json.JSONObject为我们提供了toBean方法用来转换为JAVA对象, 功能更为强大,  这里借鉴采用JDK的反射机制, 作为简单的辅助工具使用,   有些数据类型需要进行转换, 根据需要进行扩展,  这里可以处理Long和Date类型. 只支持单个JSONObject对象的处理,   对于复杂的JSON对象, 如JSONArray数组, 可考虑先遍历, 获取JSONObject后再进行处理. package common; import java.lang.refle

利用java反射机制实现List&lt;Map&lt;String, Object&gt;&gt;转化为List&lt;JavaBean&gt;

最近在用mybatis做项目,遇到将date格式化显示到easyui的问题,需要将List<Map<String, Object>>转化为List<JavaBean>,研究好久,终于在网上找到了一个方法: 核心方法如下: [java] view plain copy /** * 根据List<Map<String, Object>>数据转换为JavaBean数据 * @param datas * @param beanClass * @retur

Android利用Java反射机制修改Android System Language

private void updateLanguage(Locale locale) { try { Object objIActMag, objActMagNative; Class clzIActMag = Class.forName("android.app.IActivityManager"); Class clzActMagNative = Class.forName("android.app.ActivityManagerNative"); Method