Fwd: [jira] Closed: (GROOVY-4905) polymorphic static methods

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Fwd: [jira] Closed: (GROOVY-4905) polymorphic static methods

Jose Antonio Illescas del Olmo
After response of Jochen Theodorou I decided discuss this feature on mailing list...

  I proposed, as real Object Oriented languages (smalltalk,...) does, that "this" on static method references the Class that receive the message (method) instead of the Class that declare the method.

  Example:

     class A {
       public static foo() {
         println("foo: " + this);
       }
     }

     class B extends A {}

     class C extends B {}
 
  Calling "foo" method with subclasses:

     A.foo(); // class A is the "foo" message receptor
     B.foo(); // class B is the "foo" message receptor
     C.foo(); // class C is the "foo" message receptor

  Now returns:

     foo: class A
     foo: class A
     foo: class A

  I Propose that result must be:

     foo: class A
     foo: class B
     foo: class C




Thank you

---------- Forwarded message ----------
From: Jochen Theodorou (JIRA) <[hidden email]>
Date: Mon, Jun 27, 2011 at 4:50 PM
Subject: [jira] Closed: (GROOVY-4905) polymorphic static methods
To: [hidden email]



    [ https://jira.codehaus.org/browse/GROOVY-4905?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jochen Theodorou closed GROOVY-4905.
------------------------------------

   Resolution: Won't Fix
     Assignee: Jochen Theodorou

"this" has already a meaning different then what you suggest in a static context. So this change would be a breaking change. I suggest the mailing list for further discussion, if needed

> polymorphic static methods
> --------------------------
>
>                 Key: GROOVY-4905
>                 URL: https://jira.codehaus.org/browse/GROOVY-4905
>             Project: groovy
>          Issue Type: New Feature
>            Reporter: joseaio
>            Assignee: Jochen Theodorou
>
> Nex Class Hierarchy: A < B < C
>   class A {
>     public static foo() {
>       println("foo: "+ this);
>     }
>   }
>   class B extends A {}
>   class C extends B {}
> Calling "foo" method with subclasses:
>   A.foo(); // class A is the "foo" message receptor
>   B.foo(); // class B is the "foo" message receptor
>   C.foo(); // class C is the "foo" message receptor
> Returns:
>
>   foo: class A
>   foo: class A
>   foo: class A
> On Object Oriented "this" references message receptor (on static method is the Class)...
> Then the result must be:
>   foo: class A
>   foo: class B
>   foo: class C

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira