diff --git a/src/main/java/jadx/dex/info/ClassInfo.java b/src/main/java/jadx/dex/info/ClassInfo.java index 044b071a7..711174afd 100644 --- a/src/main/java/jadx/dex/info/ClassInfo.java +++ b/src/main/java/jadx/dex/info/ClassInfo.java @@ -53,7 +53,7 @@ public final class ClassInfo { this.type = type; String fullObjectName = type.getObject(); - assert fullObjectName.indexOf('/') == -1; + assert fullObjectName.indexOf('/') == -1 : "Raw type: " + type; boolean notObfuscated = dex.root().getJadxArgs().isNotObfuscated(); String name; diff --git a/src/main/java/jadx/dex/instructions/args/ArgType.java b/src/main/java/jadx/dex/instructions/args/ArgType.java index bd7273924..afb56241d 100644 --- a/src/main/java/jadx/dex/instructions/args/ArgType.java +++ b/src/main/java/jadx/dex/instructions/args/ArgType.java @@ -399,13 +399,16 @@ public abstract class ArgType { if (b == -1) return parse(sign); - String obj = sign.substring(0, b); + if (sign.charAt(0) == '[') + return array(parseSignature(sign.substring(1))); + + String obj = sign.substring(0, b) + ";"; String genericsStr = sign.substring(b + 1, sign.length() - 2); List generics = parseSignatureList(genericsStr); if (generics != null) - return generic(obj + ";", generics.toArray(new ArgType[generics.size()])); + return generic(obj, generics.toArray(new ArgType[generics.size()])); else - return object(obj + ";"); + return object(obj); } public static List parseSignatureList(String str) { @@ -418,12 +421,11 @@ public abstract class ArgType { } private static List parseSignatureListInner(String str, boolean parsePrimitives) { - List signs = new ArrayList(3); if (str.equals("*")) { - signs.add(UNKNOWN); - return signs; + return Arrays.asList(UNKNOWN); } + List signs = new ArrayList(3); int obj = 0; int objStart = 0; int gen = 0; diff --git a/src/samples/java/jadx/samples/TestGenerics.java b/src/samples/java/jadx/samples/TestGenerics.java index a65785e58..9def12b99 100644 --- a/src/samples/java/jadx/samples/TestGenerics.java +++ b/src/samples/java/jadx/samples/TestGenerics.java @@ -9,6 +9,8 @@ public class TestGenerics extends AbstractTest { public List strings; + public Class[] classes; + public static class GenericClass implements Comparable { @Override public int compareTo(String o) {