Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #34503

Re: Are you sure, Mr. Gosling?

From Robert Klemme <shortcutter@googlemail.com>
Newsgroups comp.lang.java.programmer
Subject Re: Are you sure, Mr. Gosling?
Date 2016-06-06 22:56 +0200
Message-ID <drm6bcFhke1U1@mid.individual.net> (permalink)
References (3 earlier) <nivlkk$1mm2$1@gioia.aioe.org> <nj14i9$ufe$1@dont-email.me> <1eb77568-ae31-4316-ac21-a33db79c5aa4@googlegroups.com> <nj3s6h$l08$1@dont-email.me> <nj471k$f77$2@Gaia.teknon.de>

Show all headers | View raw


On 06.06.2016 18:06, Volker Borchert wrote:
> Eric Sosman wrote:
>> On 6/6/2016 8:22 AM, Eric Douglas wrote:
>>> On Sunday, June 5, 2016 at 8:05:40 AM UTC-4, Eric Sosman wrote:
>>>>       Gosling et al. vote for Cloneable:
>>>>       Bloch votes against it:
>>>
>>> So what's the verdict, I have a class with a copy constructor, should I change it to be Cloneable?
>>
>>       If the vote in the Electoral College is a tie, the President
>> is elected by the House of Representatives.
>>
>>       (In other words, make your own choice.  For myself, I've implemented
>> several classes with copy constructors and zero classes with Cloneable.
>> YMMV.)
>
> A point for copy ctor or a factory method might be that you can
> follow the old advicte to "be generous in what you accept", e.g.
> have MyFancyListImpl(IMyFancyList)

This whole discussion feels slightly peculiar to me because a copy 
constructor and clone() serve different purposes.  Method clone() 
creates a new object of same type and equivalent state, depending on the 
implementation of clone() of course - but this is the intended way to go 
about things.  So this actually creates a copy of the instance.

The infamous "copy constructor" usually has a single parameter of the 
same type (sometimes superclass or interface) but will also happily 
accept any subclass instance of the argument type.  If implemented with 
"copy" logic the best this will do is copy the state of the argument 
that is relevant to this class.  It is not guaranteed to create a copy 
of the other instance.  The central point of this type of object 
creation is that calling code is in control of the resulting object's type.

Both have their merit, but different usage.  There may be some overlap 
but when I need an exact copy, I'd go for clone() whereas when I need to 
control the type (e.g. as often the case with all the collection 
classes) I'd obviously pick a "copy" constructor.

Kind regards

	robert

-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Re: Are you sure, Mr. Gosling? Arne Vajhøj <arne@vajhoej.dk> - 2016-06-04 15:27 -0400
  Re: Are you sure, Mr. Gosling? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-06-04 16:43 -0400
    Re: Are you sure, Mr. Gosling? Arne Vajhøj <arne@vajhoej.dk> - 2016-06-04 18:44 -0400
      Re: Are you sure, Mr. Gosling? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-06-05 08:05 -0400
        Re: Are you sure, Mr. Gosling? Arne Vajhøj <arne@vajhoej.dk> - 2016-06-05 08:31 -0400
        Re: Are you sure, Mr. Gosling? Eric Douglas <e.d.programmer@gmail.com> - 2016-06-06 05:22 -0700
          Re: Are you sure, Mr. Gosling? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-06-06 09:00 -0400
            Re: Are you sure, Mr. Gosling? v_borchert@despammed.com (Volker Borchert) - 2016-06-06 16:06 +0000
              Re: Are you sure, Mr. Gosling? Robert Klemme <shortcutter@googlemail.com> - 2016-06-06 22:56 +0200
                Re: Are you sure, Mr. Gosling? Eric Douglas <e.d.programmer@gmail.com> - 2016-06-07 05:08 -0700
                Re: Are you sure, Mr. Gosling? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-06-07 08:41 -0400
                Re: Are you sure, Mr. Gosling? Martin Gregorie <martin@address-in-sig.invalid> - 2016-06-07 13:14 +0000
                Re: Are you sure, Mr. Gosling? Eric Douglas <e.d.programmer@gmail.com> - 2016-06-07 06:30 -0700
                Re: Are you sure, Mr. Gosling? Robert Klemme <shortcutter@googlemail.com> - 2016-06-07 19:10 +0200
                Re: Are you sure, Mr. Gosling? Eric Douglas <e.d.programmer@gmail.com> - 2016-06-07 10:22 -0700
                Re: Are you sure, Mr. Gosling? Mike Amling <mamling@chaff.us> - 2016-06-07 15:31 -0500
                Re: Are you sure, Mr. Gosling? Eric Douglas <e.d.programmer@gmail.com> - 2016-06-08 06:31 -0700
                Re: Are you sure, Mr. Gosling? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-06-08 10:41 -0400
                Re: Are you sure, Mr. Gosling? Eric Douglas <e.d.programmer@gmail.com> - 2016-06-08 10:21 -0700
                Re: Are you sure, Mr. Gosling? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-06-08 14:10 -0400
                Re: Are you sure, Mr. Gosling? Robert Klemme <shortcutter@googlemail.com> - 2016-06-08 20:54 +0200
                Re: Are you sure, Mr. Gosling? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-06-08 16:36 -0400
                Re: Are you sure, Mr. Gosling? Robert Klemme <shortcutter@googlemail.com> - 2016-06-08 23:11 +0200
                Re: Are you sure, Mr. Gosling? Lew <lewbloch@gmail.com> - 2016-06-10 12:20 -0700
                Re: Are you sure, Mr. Gosling? Robert Klemme <shortcutter@googlemail.com> - 2016-06-14 19:10 +0200
                Re: Are you sure, Mr. Gosling? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-06-07 17:12 -0400
                Re: Are you sure, Mr. Gosling? Robert Klemme <shortcutter@googlemail.com> - 2016-06-07 23:25 +0200
                Re: Are you sure, Mr. Gosling? Arne Vajhøj <arne@vajhoej.dk> - 2016-06-07 17:33 -0400
          Re: Are you sure, Mr. Gosling? Arne Vajhøj <arne@vajhoej.dk> - 2016-06-06 21:18 -0400

csiph-web