Да.Помните, что вам нужно передать внешний экземпляр внутреннему классу.Используйте javap
, чтобы найти конструктор.Вам нужно будет пройти через java.lang.reflect.Constructor
, а не полагаться на зло Class.newInstance
.
Compiled from "Foo.java"
public class Foo$Bar extends java.lang.Object{
final Foo this$0;
public Foo$Bar(Foo);
public void printMesg(java.lang.String);
}
javap -c
интересно для конструктора, поскольку (предполагая -target 1.4
или более позднюю, теперь неявную)присвоение поля экземпляра перед вызовом супер-конструктора (раньше он был недопустимым).
public Foo$Bar(Foo);
Code:
0: aload_0
1: aload_1
2: putfield #1; //Field this$0:LFoo;
5: aload_0
6: invokespecial #2; //Method java/lang/Object."<init>":()V
9: return