Anonymous classes should pass through super ctors
Frank Benoit
keinfarbton at googlemail.com
Mon Aug 18 09:25:16 PDT 2008
Steven Schveighoffer schrieb:
> "Frank Benoit" wrote
>> Bruno Medeiros schrieb:
>>> Jarrett Billingsley wrote:
>>>> "Frank Benoit" <keinfarbton at googlemail.com> wrote in message
>>>> news:g83v3k$n2u$1 at digitalmars.com...
>>>>> Anonymous classes should pass through super ctors, if no ctor is given.
>>>>>
>>>>> class C {
>>>>> this( int i ){ .... }
>>>>> abstract void run();
>>>>> // ...
>>>>> }
>>>>>
>>>>> auto c = new class(3) C {
>>>>> this( int a ){ super(a); } //<-- this line should not be necessary.
>>>>> void run(){}
>>>>> };
>>>> All classes should pass through super ctors. :|
>>>>
>>> Yes, if this was to be fixed/changed, it should be for all classes, not
>>> just anonymous ones.
>>> I remember this issue (the automatic inheritance of ctors) being
>>> discussed before. What were the opinions of the community? And Walters?
>>> (I don't recall myself) If there was something approaching consensus, it
>>> might be worth opening a bug ticket.
>>>
>> Aren't anonymous classes a special case?
>> Because they are only instantiated once with exactly those arguments given
>> in the declaration.
>
> Yeah, but if you're going to have auto-inheritance of constructors, why not
> make it so I don't have to do this:
>
> class Base
> {
> this(int arg1, int arg2, char[] arg3, int arg4, float arg5) { ... }
> }
>
> class Derived : Base
> {
> this(int arg1, int arg2, char[] arg3, int arg4, float arg5)
> {
> super(arg1, arg2, arg3, arg4, arg5);
> }
> }
>
> This can get annoying for a large hierarchy where you always want to inherit
> the base class' intiailization methods.
>
> If we're going to get a way to do it for anonymous classes, I'd like it to
> be universal and consistent.
>
> -Steve
>
>
I feel, that this is dangerous.
If there are such complicated ctors, they should be forwarded
explicitly. But i have no real argument :)
In case of anonymous classes, the syntax should be compact. I think
there are good reasons why Java does handle it this way.
More information about the Digitalmars-d
mailing list