Why does this() and super() have to be the first statement in a constructor?
Ulf Zibis
Ulf.Zibis at gmx.de
Sat Oct 8 04:28:52 PDT 2011
Anyway,
int c = a + b;
doesn't affect any object field initialization.
It's just a local variable, which gets lost after the instance is instantiated.
As workaround, you can always use a static helper method which does the same:
super(staticHelper(a, b));
So I agree, it would reasonable, to allow some code in advance of this() or super().
+ 1 for your proposal, Vimil Saju.
-Ulf
Am 08.10.2011 01:39, schrieb Daniel Yokomizo:
> On Oct 7, 2011 1:58 PM, "Paul Benedict"<pbenedict at apache.org> wrote:
>> It's a compiler error because the superclass is guaranteed to be
>> initialized first before the subclass.
> Not guaranteed by the JVM, as in anonymous inner classes.
>
>> On Fri, Oct 7, 2011 at 11:51 AM, Vimil Saju<vimilsaju at yahoo.com> wrote:
>>> If you have subclass then java requires that this() or super has to be
> first statement in the constructor of the subclass.
>>> Here is an example
>>>
>>> publicclassMyClass{
>>> publicMyClass(intx){}
>>> }
>>>
>>> publicclassMySubClassextendsMyClass{
>>> publicMySubClass(inta,intb){
>>> intc =a +b;
>>> super(c); // COMPILE ERROR
>>> }
>>> }The above compilation error can be resolved by rewriting the code in
> the constructor as follows
>>> publicclassMySubClassextendsMyClass{
>>> publicMySubClass(inta,intb){
>>> super(a + b);
>>> }
>>> }Can't the Java compiler detect that in the previous code there was no
> access to the instance fields or methods and therefore allow the code to
> compile without any error.
>>>
>
More information about the coin-dev
mailing list