diff --git a/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java b/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java index 2d8bb9e6fce1f7ae5acc5d22dae31137dee06270..a04666599e28dbd135581ecb0e08e0aba3d97419 100644 --- a/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java +++ b/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java @@ -397,10 +397,15 @@ public class ClassGen { if (classInfo.getPackage().equals(useCls.getPackage())) { fullName = classInfo.getNameWithoutPackage(); } - for (ClassInfo importCls : imports) { + for (ClassInfo importCls : getImports()) { if (!importCls.equals(classInfo) && importCls.getShortName().equals(shortName)) { - return fullName; + if (classInfo.isInner()) { + String parent = useClassInternal(useCls, classInfo.getParentClass()); + return parent + "." + shortName; + } else { + return fullName; + } } } addImport(classInfo); @@ -416,6 +421,14 @@ public class ClassGen { } } + private Set getImports() { + if (parentGen != null) { + return parentGen.getImports(); + } else { + return imports; + } + } + private static boolean isClassInnerFor(ClassInfo inner, ClassInfo parent) { if (inner.isInner()) { ClassInfo p = inner.getParentClass(); @@ -449,10 +462,6 @@ public class ClassGen { } } - public Set getImports() { - return imports; - } - public ClassGen getParentGen() { return parentGen; } diff --git a/jadx-samples/src/main/java/jadx/samples/TestImports2.java b/jadx-samples/src/main/java/jadx/samples/TestImports2.java new file mode 100644 index 0000000000000000000000000000000000000000..13be9cfeebc815dc6396b45f847a9eb721189ea6 --- /dev/null +++ b/jadx-samples/src/main/java/jadx/samples/TestImports2.java @@ -0,0 +1,40 @@ +package jadx.samples; + +import jadx.samples.otherpkg.C.E; +import jadx.samples.otherpkg.D; + +public class TestImports2 extends AbstractTest { + + public Object f1() { + return new E() { + @Override + public String toString() { + return "C.E"; + } + }; + } + + public Object f2() { + return new D.E() { + @Override + public String toString() { + return "D.E"; + } + }; + } + + public static class X1 extends E { + } + + public static class X2 extends D.E { + } + + @Override + public boolean testRun() { + return true; + } + + public static void main(String[] args) { + new TestImports2().testRun(); + } +} diff --git a/jadx-samples/src/main/java/jadx/samples/otherpkg/C.java b/jadx-samples/src/main/java/jadx/samples/otherpkg/C.java new file mode 100644 index 0000000000000000000000000000000000000000..1073bdcf78b4a59e75d2cd51c3e33f003a117c53 --- /dev/null +++ b/jadx-samples/src/main/java/jadx/samples/otherpkg/C.java @@ -0,0 +1,7 @@ +package jadx.samples.otherpkg; + +public class C { + public static class E { + + } +} diff --git a/jadx-samples/src/main/java/jadx/samples/otherpkg/D.java b/jadx-samples/src/main/java/jadx/samples/otherpkg/D.java new file mode 100644 index 0000000000000000000000000000000000000000..e1cdd6a952abca1f20724dbe4460bda3ed8eb86e --- /dev/null +++ b/jadx-samples/src/main/java/jadx/samples/otherpkg/D.java @@ -0,0 +1,7 @@ +package jadx.samples.otherpkg; + +public class D { + public static class E { + + } +}