Java 在接口Cloneable中找不到符号clone()
我正在尝试克隆可克隆列表:Java 在接口Cloneable中找不到符号clone(),java,Java,我正在尝试克隆可克隆列表: public static <T extends Cloneable> List<T> cloneList(List<T> list) { List<T> out = new ArrayList<T>(); for(int i=0;i<list.size();i++) { out.add((T)((T)list.get(i)).clone()); }
public static <T extends Cloneable> List<T> cloneList(List<T> list)
{
List<T> out = new ArrayList<T>();
for(int i=0;i<list.size();i++)
{
out.add((T)((T)list.get(i)).clone());
}
return out;
}
为什么,;
clone()
可克隆接口的唯一方法不是吗?您需要实现Cloneable
并重写clone()
以使用它(使它成为公共的
,它在对象
类中受保护的
).您需要实现Cloneable
并覆盖clone()
以使用它(将其设置为public
,它在对象
类中受保护)。clone()默认受保护,您能否将其覆盖为publicclone()默认受保护,请您将其重写为public可克隆
是一个接口,clone()方法在对象类中,因此您应该根据需要重写类中的clone()方法,并且您还必须实现可克隆接口,以告知JVM对象是可克隆的。Cloneable接口的工作原理类似于用于序列化的Serializable接口。Cloneable
是一个接口,clone()方法在对象类中,因此您应该根据需要重写类中的clone()方法,并且您还必须实现Cloneable接口来告诉JVM对象是可克隆的。Cloneable接口的工作原理与Serializable接口类似,Serializable接口用于序列化。您看过Cloneable的Javadoc吗?@KarthikR该列表应该能够包含实现Cloneable接口的任何对象类型。我认为这就是所谓的“泛型”…@KarthikR我把这个方法做成了一个静态泛型方法,因为我没有注意到这是一个编译错误。道歉。你看过可克隆接口的Javadoc吗?@KarthikR该列表应该能够包含实现可克隆接口的任何对象类型。我认为这就是所谓的“泛型”…@KarthikR我把这个方法做成了一个静态泛型方法,因为我没有注意到这是一个编译错误。道歉。我想让这个方法使用任何实现Cloneable
接口的类型-不一定是我自己写的类。@Alexander,我明白你的意思了,但事实是要使类可克隆,有两个条件,一个是类必须实现可克隆接口,第二个是类必须重写clone()方法并将其公开,我没有类,我只有一个静态方法可以克隆可克隆的列表。cloneable应该提供一种方法来克隆它,我只是尝试克隆一个列表。我希望该方法使用实现cloneable
接口的任何类型-不一定是我自己编写的类。@Alexander,我明白你的意思,但事实是要使类可克隆,有两个条件,一个是类必须实现可克隆接口,第二个是类必须重写clone()方法并将其公开,我没有类,我只有一个静态方法可以克隆可克隆的列表。cloneable应该会带来一种方法来克隆它,我只是试着克隆一个列表。
Helpers.java:40: error: cannot find symbol
out.add((T)((T)list.get(i)).clone());
^
symbol: method clone()
location: interface Cloneable