Object的clone方法到底怎么使用?

[code="java"]
public interface Controller extends Cloneable{

}
public class A {
public final Hashtable mapping = new Hashtable();
private Controller get(){
Controller controller = HandleMapping.mapping.get("controllerID");
return controller.clone(); //这里提示clone方法找不到
}
}

[/code]

请问 为什么会出现这种错误?怎么解决?
[b]问题补充:[/b]
[code="java"]private Controller get(){

Controller controller = HandleMapping.mapping.get("controllerID");

return controller.clone(); //这里提示clone方法找不到

} [/code]

我想问的是 controller.clone(); 为什么提示找不到 clone方法呢

接口也是一个对象,Object是所有对象的基类,而clone方法是在Object定义的.
[b]问题补充:[/b]
父类中的proteced方法 在子类中也能访问的

[color=red]问题补充:
父类中的proteced方法 在子类中也能访问的 [/color]
这是没错,但你的代码是
public class A {

public final Hashtable mapping = new Hashtable();

private Controller get(){

Controller controller = HandleMapping.mapping.get("controllerID");

return [color=red]controller.clone(); [/color]//这里提示clone方法找不到

}

}

也就是你在A类要调用Controller 的protected方法,先看看它们的作用域吧

建议改为这样
public interface Controller extends Cloneable {
public Controller clone() throws CloneNotSupportedException;
}
然后在Controller 的实现类里实现这个接口,这样你的调用就可以了

Cloneable只是一个标志性接口,A implements Cloneable说明A可提供克隆功能,具体如何克隆A这个class必须具体实现,另外Object的clone是protected的,你可以在A覆盖clone方法,且声明为public
public Object clone()
{
A a = new A();
a.propertyXXX = this.propertyXXX
...
return a;
}

类直接implements 克隆接口Cloneable,实现其接口方法就行,如下:
public class A implements Cloneable {
//克隆对象
public Object Clone() throws CloneNotSupportedException{
return super.clone();
}
}

[color=red]我想问的是 controller.clone(); 为什么提示找不到 clone方法呢

接口也是一个对象,Object是所有对象的基类,而clone方法是在Object定义的. [/color]

Object的clone是protected