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()默认受保护,您能否将其覆盖为public

clone()默认受保护,请您将其重写为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