public class ClassMethodUtil {
/**
* @author yuxin 执行对象内特定的私有或公用函数
* @param clsType
* 函数所在的类
* @param obj
* 函数所在的对象
* @param methodName
* 函数名称
* @param parameterTypes
* 函数参数的类型数组
* @param args
* 函数参数数组
* @return 方法执行后的返回值
*/
public static Object methoInvoke(Class clsType, Object obj,String methodName, Class[] parameterTypes, Object[] args)
throws Exception {
try {
Method method = clsType.getDeclaredMethod(methodName,
parameterTypes);
method.setAccessible(true);
return method.invoke(obj, args);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new Exception(e);
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new Exception(e);
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new Exception(e);
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new Exception(e);
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new Exception(e);
}
}
/**
* @author yuxin 取得对象内特定的私有或公用字段
* @param clsType
* 字段所在的类
* @param obj
* 字段所在的对象
* @param fieldName
* 字段名称
* @return 字段值
*/
public static Object getField(Class clsType, Object obj, String fieldName)
throws Exception {
try {
Field field = clsType.getDeclaredField(fieldName);
field.setAccessible(true);
return field.get(obj);
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new Exception(e);
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new Exception(e);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new Exception(e);
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new Exception(e);
}
}
/**
* @author yuxin 取得对象内特定的私有或公用字段
* @param clsType
* 字段所在的类
* @param obj
* 字段所在的对象
* @param fieldName
* 字段名称
* @param value
* 字段值
*/
public static void setField(Class clsType, Object obj, String fieldName,
Object value) throws Exception {
try {
Field field = clsType.getDeclaredField(fieldName);
field.setAccessible(true);
field.set(obj, value);
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new Exception(e);
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new Exception(e);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new Exception(e);
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new Exception(e);
}
}
}
分享到:
相关推荐
java 反射 调用私有方法(有参数私有方法)获取私有属性值
介绍一篇关于PHP通过反射方法调用执行类中的私有方法,希望这篇教程能够帮助到各位朋友,有兴趣的可以进来看看。具有完整的反射 API,添加了对类、接口、函数、方法和扩展进行反向工程的能力。
Method,invoke,getMethod等反射私有方法和私有属性
Java 反射详解(包含私有方法属性的调用)
Java反射机制,万物皆对象,class也是一个类的对象,通过类类型,反射获得类的成员属性,构造方法,成员方法,并调用类中的方法,也可以调用私有方法。
Java反射 调用空参方法 调用Object类型参数的方法 调用基本类型参数的方法 调用基本类型数组参数的方法 调用String数组参数的方法 调用Object数组参数的方法 调用私有方法
C#私有成员反射调用类库
学习反射.调用反射内的方法 C# 加载Dll 使用反射 调用对应的方法公开方法,私有方法,泛型方法
通过java类的路径实例化类并调用方法:仅仅知道类的路径,就可以实例化对象,利用反射机制调用其方法
调用空参方法 调用Object类型参数的方法 调用基本类型参数的方法 调用数组参数的方法 调用私有方法
本例演示了如何使用反射,调用类的静态方法,封装了工具类ClsTool,统一实现静态方法的调用。使用反射,在特定场景下,能够很好的简化代码。例如mybatis
[Swift]1.在OC项目里的OC代码调用Swift方法,Swift代码里调用OC代码。2.在Swift项目里的Swift代码里调用OC代码,OC代码调用Swift方法。
1、私有方法(只有类的内部才可以访问的方法) 2、保护方法(只有类的内部和该类的子类可以访问的方法) 3、共有方法(无论内部或外部均可访问的方法) 4、静态方法(可以不实例话对象,通过类名.方法就可以调用的...
1.动态调用类方法,模拟VB中的CallByName 2.附带了C#和VB的代码 3.主要是一个项目中用到了要调用很多参数和返回值相同的一系列函数,所以 想到了这个方法,不用重复的写方法名,使用循环调用
Android Studio项目,此Demo实现Java调用C++函数,然后C++函数回调Java方法、纯C++直接调用Java方法,此为github地址链接
例如 :在 OC 开发过程中出现的私有属性就是假私有属性,通过 runtime 可以很方便拿到私有属性并进行修改。同出师门,swift 中的私有属性就是真私有属性,通常需要 private 来修饰。 那么在 python 开发中,我们如何...
假定两个Controller都在...显然不应该通过直接创建Controller B的实例,再调用方法来完成。因为Controller B的实例中,Spring Boot为其进行配置和对象注入,这些准备工作不是简单通过实例化Controller B可以完成。
RN与android混合开发及RN调用原生方法
下面小编就为大家带来一篇利用java反射机制调用类的私有方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧