如何在Java中复制对象

如何在Java中复制对象,java,Java,我正在做我自己的anythink,它实现了可比较的接口。算法看起来不错,但是Comparable a=list.get(i)是一个链接,但我需要这个对象的副本。我不能使用list.get(I).copy(),因为它对于可比较对象是未定义的 private static void sortIncrease(ArrayList<Comparable> list) { int i, j; for (i = 1; i < list.size(); i++) {

我正在做我自己的anythink,它实现了可比较的接口。算法看起来不错,但是
Comparable a=list.get(i)是一个链接,但我需要这个对象的副本。我不能使用
list.get(I).copy()
,因为它对于可比较对象是未定义的

private static void sortIncrease(ArrayList<Comparable> list) {
    int i, j;

    for (i = 1; i < list.size(); i++) {
        Comparable a = list.get(i);

        for (j = i - 1 ; j >= 0 ; j = j - 1) {
            int cmpResult = a.compareTo(list.get(j));

            if (cmpResult < 0) {
                list.set(j + 1, list.get(j));
            } else {
                list.set(j+1, a);
                break;
            }
        }
    }       
}
private static void sortIncrease(ArrayList列表){
int i,j;
对于(i=1;i=0;j=j-1){
int cmpResult=a.compareTo(list.get(j));
如果(cmpResult<0){
list.set(j+1,list.get(j));
}否则{
列表集(j+1,a);
打破
}
}
}       
}
我可以建议你一个“坏方法”,创建你自己的克隆方法。 你可以:

-将其他可比较对象的参数作为输入,并将其克隆到对象中


-创建一个提供参数的方法,稍后将其插入构造函数。

为什么需要对象的副本?如果这是一个排序算法,就没有必要了。对,你通常不复制对象,而是复制引用。另外,
compariable
通常是参数化的。例如,
可比
。不要使用原始类型。我不能参数化它,因为我真的不知道它是什么。它可以是字符串、int或smth等@标记空格,然后使用通配符<代码>可比较
与引用/对象无关。这一切都与你的代码被破坏有关。复制对象无法修复它,您的逻辑是错误的。提示:您需要一个临时变量。