匿名 Class - 我们可以为同一个匿名 class 创建两个新对象吗?
Anonymous Class - Can we have two new objects for a same anonymous class?
当我们创建一个匿名的class,喜欢
Employee emp = new Employee() {
void get() {
//Some body
}
void put() {
//Some body
}
};
emp.set();
emp.get();
对象引用emp指的是上述匿名内部class的对象。
我们还可以创建另一个匿名 class ,其对象可以由相同的对象引用引用,如
emp = new Employee() {
void x() {
//Some body
}
void y() {
//Some body
}
};
emp.x();
emp.y();
但是有没有办法为同一个匿名 class 创建另一个对象?如果需要,是否可以为现有匿名 class 创建一个新对象?
作为一般经验法则 - 如果您想要同一个匿名 class 的多个实例,很可能它不应该是匿名的 - 只需将其设为一个普通的旧名称 class并根据需要实例化它的多个对象。
不过,您可以使用一个肮脏的技巧,即访问实例的 getClass()
并使用反射来实例化一个新实例:
Employee emp2 = emp.getClass().newInstance();
当我们创建一个匿名的class,喜欢
Employee emp = new Employee() {
void get() {
//Some body
}
void put() {
//Some body
}
};
emp.set();
emp.get();
对象引用emp指的是上述匿名内部class的对象。 我们还可以创建另一个匿名 class ,其对象可以由相同的对象引用引用,如
emp = new Employee() {
void x() {
//Some body
}
void y() {
//Some body
}
};
emp.x();
emp.y();
但是有没有办法为同一个匿名 class 创建另一个对象?如果需要,是否可以为现有匿名 class 创建一个新对象?
作为一般经验法则 - 如果您想要同一个匿名 class 的多个实例,很可能它不应该是匿名的 - 只需将其设为一个普通的旧名称 class并根据需要实例化它的多个对象。
不过,您可以使用一个肮脏的技巧,即访问实例的 getClass()
并使用反射来实例化一个新实例:
Employee emp2 = emp.getClass().newInstance();