java反射工具类


package com.example.test;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import android.util.Log;

public class ClsUtils {
private static final String TAG = "XXX";

/**
*
* @param className
* 需要反射类的名字
* @return
* @throws ClassNotFoundException
*/
public static Class creatClassObject(String className)
throws ClassNotFoundException {
Class cls = Class.forName(className);
return cls;
}

/**
*
* @param cls
* 反射类
* @param key
* 系统属性key值
* @param val
* key对应的value值
*/
public static void setSystemProperties(Class cls, String key, String val) {
try {
Method hideMethod = cls.getMethod("set", new Class[] {
String.class, String.class });
Object object = cls.newInstance();
hideMethod.invoke(object, new Object[] { new String(key),
new String(val) });
Log.e(TAG, "111111111111111111");
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}

/**
* 得到系统属性key值对应的value值
*
* @param cls
* 反射类
* @param key
* 系统属性key值
* @return
*/
public static String getSystemProperties(Class cls, String key) {
String value = null;
try {
Method hideMethod = cls.getMethod("get", String.class);
Object object = cls.newInstance();
value = (String) hideMethod.invoke(object, key);
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
return value;
}

/**
* 查看反射类的 所有方法和常量
*
* @param cls
*/
static public void printMethod(Class cls) {
Log.e(TAG, "--------printMethod-------");
Method[] hideMethod = cls.getMethods();
// 取得所有方法
int i = 0;
for (i = 0; i < hideMethod.length; i++) {
Log.e(TAG, hideMethod[i].getName().toString());
}
Log.e(TAG, "--------print static var-------");
// 取得所有常量
Field[] allFields = cls.getFields();
for (i = 0; i < allFields.length; i++) {
Log.e(TAG, allFields[i].getName());
}
}
}

Java 反射工具类 ReflectUtils 是一个提供了便捷的反射操作方法的工具类。它封装了 Java 反射 API 的一些常用功能,使得开发者能够更加方便地使用反射进行、方法、字段的操作。 ReflectUtils 提供了以下几个方法: 1. getTypeArguments:通过反射获取指定的泛型型参数。可以通过该方法来获取泛型型的具体参数型,方便在运行时进行型判断和操作。 2. invokeGetter:通过反射调用指定对象的指定字段的 getter 方法。在无法直接访问字段或需要动态调用字段的 getter 方法时,可以使用该方法。 3. invokeSetter:通过反射调用指定对象的指定字段的 setter 方法。在无法直接访问字段或需要动态调用字段的 setter 方法时,可以使用该方法。 4. getFieldValue:通过反射获取指定对象的指定字段的值。在无法直接访问字段时,可以使用该方法获取字段的值。 5. setFieldValue:通过反射设置指定对象的指定字段的值。在无法直接访问字段时,可以使用该方法设置字段的值。 6. getField:通过反射获取指定的指定字段。可以用于获取字段的修饰符、型等信息。 7. getMethod:通过反射获取指定的指定方法。可以用于获取方法的修饰符、返回值型、参数型等信息。 ReflectUtils 的使用能够简化反射操作的代码,提高开发效率,但也需要注意合理使用,避免引入不必要的复杂性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值