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