Por que uma classe interna anônima não contém nada gerado a partir desse código?
package com.test;
public class OuterClass {
public class InnerClass {
public class InnerInnerClass {
}
}
public class InnerClass2 {
}
//this class should not exist in OuterClass after dummifying
private class PrivateInnerClass {
private String getString() {
return "hello PrivateInnerClass";
}
}
public String getStringFromPrivateInner() {
return new PrivateInnerClass().getString();
}
}
Quando executadojavac
na linha de comando comSun JVM 1.6.0_20
, esse código produz 6 arquivos .class:
OuterClass.class
OuterClass $ 1.class
OuterClass $ InnerClass.class
OuterClass $ InnerClass2.class
OuterClass $ InnerClass $ InnerInnerClass.class
OuterClass $ PrivateInnerClass.class
Quando executado através do JDT no eclipse, ele produz apenas 5 classes.
OuterClass.class
OuterClass $ 1.class
OuterClass $ InnerClass.class
OuterClass $ InnerClass2.class
OuterClass $ InnerClass $ InnerInnerClass.class
OuterClass $ PrivateInnerClass.class
Quando descompilado,OuterClass$1.class
não contém nada. De onde vem essa classe extra e por que é criada?