首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Cloneable接口中找不到符号克隆()

在Cloneable接口中找不到符号克隆()
EN

Stack Overflow用户
提问于 2016-06-20 15:01:43
回答 3查看 1.7K关注 0票数 0

我正在尝试克隆可克隆对象的列表:

代码语言:javascript
复制
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;
}

这会抛出错误:

代码语言:javascript
复制
Helpers.java:40: error: cannot find symbol
            out.add((T)((T)list.get(i)).clone());
                                       ^
  symbol:   method clone()
  location: interface Cloneable

为什么;clone()不就是Cloneable接口的唯一方法吗?

EN

回答 3

Stack Overflow用户

发布于 2016-06-20 15:05:33

clone()在默认情况下是受保护的,您是否可以将其重写为public

票数 2
EN

Stack Overflow用户

发布于 2016-06-20 15:07:22

clone是一个marker接口,clone()方法在Object类中,因此您应该根据自己的需要覆盖类中的clone()方法,并且还必须实现cloneable接口来告诉JVM该对象是可克隆的。Cloneable接口的工作原理类似于Serializable接口,后者用于序列化。

票数 1
EN

Stack Overflow用户

发布于 2016-06-20 15:03:58

您需要实现Cloneable并覆盖clone()才能使用它(将其设为public,它是Object类中的protected )。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37916357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档