I don't like the idea of allowing different access modifiers on
interfaces, in fact I don't even like the fact that you can put a
"public" in there.
For me the different access levels actually define different
interfaces already, i.e. a class implicitly defines up to three
interfaces for different consumers (public, public+protected,
public+protected+package-private) -- four if you count internal
consumption. Java didn't invent a notion of an interface, it just made
it explicit. Adding access modifiers into Java's interface structures
would IMO deviate from the original idea and weaken the whole system.
I would rather see something like "class X implements Y protected",
although that wouldn't help for traits.
For me a trait (I somehow prefer "mixin") is something quite different
and much more like a class than an interface. Using interfaces for
that purposes would IMO break the conceptual integrety of the Java
type system even more; and the loss of abstraction that interfaces
provide nowadays seems likely to cause pain later on -- e.g. the
classic diamond pattern might get you (although I believe the diamond
problem can be solved by enforcing overrides in the bottom class at
compile time: everone who derives from two conflicting classes has to
provide their own implementation -- brittle without versioned
classes/interfaces, but at least it would break in obvious ways).
Peter
On Wed, Nov 5, 2008 at 2:42 PM, Jess Holle <[EMAIL PROTECTED]> wrote:
> I concur. Traits would be a hugely useful addition.
>
> To make them really sing, however, one needs non-public interface methods.
> For instance:
>
> public interface Foo
> {
> public void doIt()
> {
> // default implementation logic implemented in terms of getXInternal()
> and/or setXInternal()
> }
>
> protected X getXInternal();
> protected void setXInternal(X x);
> }
>
> Either that or one needs to allow interfaces to have fields, which is much
> uglier. Having non-public accessors allows one to have virtual fields used
> in the default logic which can then be mapped as appropriate as part of
> implementing the trait interface.
>
> --
> Jess Holle
>
> Mark Derricutt wrote:
>
> Please please please bring on traits! I'm somewhat on the fence of rather
> seeing traits than closures in java sooner than the other.
>
> I'm finding LOTS of places in my code where traits would just make things
> cleaner.
>
> More and more I think I just want scala :)
>
> On Wed, Nov 5, 2008 at 12:15 PM, hlovatt <[EMAIL PROTECTED]> wrote:
>>
>> I thinks that Traits are a great idea for Java and judging by #215 the
>> posse, particularly Dick, like them. I wrote about them for Java 7 in:
>>
>> http://www.artima.com/weblogs/viewpost.jsp?thread=220916
>>
>> What do you think?
>>
>
>
>
> --
> "It is easier to optimize correct code than to correct optimized code." --
> Bill Harlan
>
>
>
>
> >
>
--
What happened to Schroedinger's cat? My invisible saddled white dragon ate it.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "The
Java Posse" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/javaposse?hl=en
-~----------~----~----~----~------~----~------~--~---