添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接


***测试demo    git仓库: ​ ​https://github.com/alwaysInRoad/test-enum-demo.git​

测试demo内的代码是从实际项目中抽离出来的,本demo为普通java项目。

说明:

在实际项目中所应用到的场景:在项目运行过程中,根据用户行为动态的改变sql语句中所对应的枚举值,从而动态查询或插入修改。

关键代码说明:

//根据反射获取常量类
Class c2 = Class.forName("com.zr.entity.Constant");
//获取常量类中的所有内部类
Class innerClazz[] = c2.getDeclaredClasses();
//遍历内部内
for (Class class1 : innerClazz) {
//判断类是不是枚举类
if(class1.isEnum()){
//获取内部内的类名,在这里其实就是获取枚举类
String simpleName = class1.getSimpleName();
//反射获取枚举类
Class<Enum> clazz = (Class<Enum>)Class.forName("com.zr.entity.Constant$"+simpleName);
//获取所有枚举实例
Enum[] enumConstants = clazz.getEnumConstants();
//根据方法名获取方法
Method getCode = clazz.getMethod("getDesc");
for (Enum enum1 : enumConstants) {
//得到枚举实例名
String name2 = enum1.name();
//执行枚举方法获得枚举实例对应的值
Object invoke = getCode.invoke(enum1);
System.out.println(name2+":"+invoke.toString());
}
}
}

需要注意的是:

Class<Enum> clazz = (Class<Enum>)Class.forName("com.zr.entity.Constant$"+simpleName);

内部类的反射获取需要加   &+内部类类名

结语:本人所有文章都立志写的简单易懂,戳中问题点。 当然了,简单的同时可能忽略了很多细节与详细,如有不足的地方,还请谅解并指出。


混淆后的java代码能还原吗 混淆过的代码怎么看

如何恢复混淆过后的代码文件,这个时候需要用到Mapping.txt文件。Mapping文件:用来查看混淆前和混淆后的对比文件。一般用来查看线上的bug的log日志。 mapping文件目录: \app\build\outputs\mapping\release。 既然是要还原混淆过后的代码,首先要想到一点,混淆-ProGuard,Android自带的混淆工具,既然可以混淆我们的源文件那相反肯定也可