我有一个抽象类,它有一个共享方法,该方法创建该类的新实例。我不想创建实际抽象类的新实例(无论如何你都不能这样做),而是创建实现子类的新实例。
为了做到这一点,我正在这样做:
constructor = this.getClass().getConstructor(String.class,String.class);
Object[] params = new Object[2];
params[0] = "one";
params[1]= "two";
Object piece = constructor.newInstance(params);
有没有更简洁的方法来做到这一点
最佳答案
虽然您可以用更少的代码来编写您正在做的事情,但我认为您可能应该考虑一种更简洁的方法。您可以创建一个扩展类必须实现的抽象方法来构造新实例。这将保证总是有一个安全的构造函数可以调用,并且没有实例化异常需要处理。对于您的情况,它看起来像这样:
public abstract class AbstractClass {
protected abstract AbstractClass newInstance(String str1, String str2);
public void foo() {
Object piece = newInstance("one", "two");
}
}
public class MyClass extends AbstractClass {
protected AbstractClass newInstance(String str1, String str2) {
return new MyClass(str1, str2);
}
}
关于java - 在java中从类内部实例化同一类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5533702/