如果你不用Java克隆那么你做了什么,你怎么称呼它?

loo*_*ese 11 java oop

有没有人在Java中有任何建议或建立的最佳实践和复制构造函数/工厂方法等的命名约定?特别是,假设我有一个类Thing,我希望某个方法返回一个ThingThing传入的值相同的新方法(如果它是实例方法,则返回实例).你有这个作为构造函数或静态工厂方法或实例方法?你会怎么称呼它?

根据标题,我想避免clone()Cloneable.

Kat*_*one 16

Effective Java建议使用以下任一方法:

  1. 复制构造函数(如其他人所述):

    公共项目(项目项目)

  2. 复制工厂方法:

    public static Item newInstance(Item item)

(另外,不能复制不可变的)

主要区别在于,使用#1选择结果的实际类,使用#2,实​​现者可以返回子类.课程的语义可以指导你哪一个是最好的.


Mne*_*nth 0

如果需要,您可以覆盖clone()方法。另一种常用的做法是构造函数,它采用这种类型的对象,即new ArrayList(anotherList)