当我们创建一个匿名类时,比如
Employee emp = new Employee() {
void get() {
//Some body
}
void put() {
//Some body
}
};
emp.set();
emp.get();
对象引用 emp 引用上述匿名内部类的对象。我们还可以创建另一个匿名类,其对象可以通过相同的对象引用来引用,例如
emp = new Employee() {
void x() {
//Some body
}
void y() {
//Some body
}
};
emp.x();
emp.y();
但是有没有办法为同一个匿名类创建另一个对象?如果需要,是否可以为现有匿名类创建新对象?
作为一般的经验法则 - 如果你想要同一个匿名类的多个实例,很可能它不应该是匿名的 - 只需将其设置为一个普通的旧命名类并实例化任意数量的对象即可。
但是,您可以使用的一个肮脏技巧是访问实例的getClass()
并使用反射来实例化新实例:
Employee emp2 = emp.getClass().newInstance();