【发布时间】:2015-08-26 20:09:24
【问题描述】:
class Person implements Cloneable {
int age;
Person(int age) {
this.age = age;
}
@Override
public Object clone() {
try {
return super.clone();
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
public static void main(String[] args) {
Person p = new Person(0);
Person p1 = (Person) p.clone();
p.age = 10;
System.out.println(p.age + " " + p1.age);
}
结果是 10 0 在 java 中,我们可以简单地使用 super.clone() 来实现克隆。 但是我怎样才能快速做同样的事情呢? 我必须写这样的东西来快速实现克隆吗?
class Person: NSObject, NSCopying {
var age: Int?
func copyWithZone(zone: NSZone) -> AnyObject {
var p = Person()
p.age = self.age
return p
}
}
一个班级,一个成员似乎没问题。但是如果我有很多子类,并且每个子类都有不同的成员,那将是很多代码,我应该为每个子类实现克隆。
在java中,超类中只有一个clone方法,要简单得多。
【问题讨论】:
-
谢谢,我已经看到了,这不是我想要的答案。 @aadarshs
-
我想答案是 Swift 缺乏这种舒适感。不知道 Swift2 是否带来了任何改进。
标签: swift