Implement ReflectionUtils.dexToJavaName

This commit is contained in:
Ben Gruver 2016-09-26 22:26:50 -07:00
parent 7f20300b92
commit 9c039ef1de

View File

@ -31,37 +31,43 @@
package org.jf.dexlib2.analysis.reflection.util; package org.jf.dexlib2.analysis.reflection.util;
import com.beust.jcommander.internal.Maps; import com.google.common.collect.ImmutableBiMap;
import java.util.Map;
public class ReflectionUtils { public class ReflectionUtils {
private static final Map<String, String> privitiveMap = Maps.newHashMap( private static ImmutableBiMap<String, String> primitiveMap = ImmutableBiMap.<String, String>builder()
"boolean", "Z", .put("boolean", "Z")
"int", "I", .put("int", "I")
"long", "J", .put("long", "J")
"double", "D", .put("double", "D")
"void", "V", .put("void", "V")
"float", "F", .put("float", "F")
"char", "C", .put("char", "C")
"short", "S", .put("short", "S")
"byte", "B" .put("byte", "B")
); .build();
public static String javaToDexName(String javaName) { public static String javaToDexName(String javaName) {
if (javaName.charAt(0) == '[') { if (javaName.charAt(0) == '[') {
return javaName.replace('.', '/'); return javaName.replace('.', '/');
} }
if (privitiveMap.containsKey(javaName)) { if (primitiveMap.containsKey(javaName)) {
return privitiveMap.get(javaName); return primitiveMap.get(javaName);
} }
javaName = javaName.replace('.', '/'); return 'L' + javaName.replace('.', '/') + ';';
if (javaName.length() > 1 && javaName.charAt(javaName.length()-1) != ';') { }
javaName = 'L' + javaName + ';';
public static String dexToJavaName(String dexName) {
if (dexName.charAt(0) == '[') {
return dexName.replace('/', '.');
} }
return javaName;
if (primitiveMap.inverse().containsKey(dexName)) {
return primitiveMap.inverse().get(dexName);
}
return dexName.replace('/', '.').substring(1, dexName.length()-2);
} }
} }