Java中的抽象类和反射

The*_*tor 2 java reflection abstract-class

我有一个抽象类,大多数实例化为匿名内部类,在那里实现抽象方法.这些实例被传递,因此在代码中的不同位置我想获得这些实例之一的副本,一个新实例,但实现方法相同.这是我的代码示例:

public abstract class AbstractClass {
String id;
Entity owner;
public AbstractClass(String id){
    this.id=id;
} 
public Mover(){
    id="This is an id";
}
abstract void update();
}
Run Code Online (Sandbox Code Playgroud)

我像这样实例化它:

AbstractClass instance= new AbstractClass("This is a test"){
void update(){
//do stuff
}
}
Run Code Online (Sandbox Code Playgroud)

后来,我想要该实例的副本,而不是引用,其中up​​date()执行相同的操作,但所有者将是不同的实体.我试过使用反射,(.getClass.newInstance()),但我得到了一个java.lang.InstantiationException.为什么这不起作用,是否有更好的方法来做我正在做的事情?

Sea*_*oyd 6

您无法通过newInstance()实例化匿名内部类.非静态内部类包含对其容器Object的引用,您需要该Object来创建它们.

请参阅Java教程 - >嵌套类