克隆方法与java中的复制构造函数.哪一个是正确的解决方案.在哪里使用每个案例?
是否可以使用反射在抽象祖先类中创建派生类的实例让我们说:
abstract class Base {
public Base createInstance(){
//using reflection
Class<?> c = this.getClass();
Constructor<?> ctor = c.getConstructor();
return ((Base) ctor.newInstance());
}
}//end Base
class Derived extends Base {
main(){
new Derived().createInstance()
}
Run Code Online (Sandbox Code Playgroud)
}
这是我无法理解的.
在java.lang.Object所述clone()与定义protected改性剂.根据定义,它可以通过名称在其自己的类定义中访问,通过名称在从它派生的任何类中,并通过名称在同一个包中的任何类的定义中.
这里的Sample类在另一个包中,显然它无法clone()从Object类中访问.但是,由于Sample隐含地来源Object,为什么它无法访问它?该定义并未说明它必须满足两个条件(在同一个包内并且也是一个子类).
public class Sample {
public Object foo() throws CloneNotSupportedException {
...
return someObject.clone();
}
}
Run Code Online (Sandbox Code Playgroud)