Request for review: proposal for @FunctionalInterface checking (original) (raw)

Joe Darcy joe.darcy at oracle.com
Fri Dec 28 13:38:57 PST 2012


Hi Sam,

On 12/28/2012 12:28 PM, Sam Pullara wrote:

On Dec 28, 2012, at 3:02 PM, Joe Darcy <joe.darcy at oracle.com_ _<mailto:joe.darcy at oracle.com>> wrote:

has exactly one abstract method. Since default methods are not abstract, any default methods declared in an interface do not contribute to its abstract method count. If an interface declares a method overriding one of the public methods of java.lang.Object, that also does not count toward the abstract method count. This is pretty murky. This works: interface Foo { @Override boolean equals(Object other); } but if you try this interface Foo { @Override default boolean equals(Object other) { return false; } } it does give an error that says I can't override: *java: default method equals in interface spullara.Foo overrides a member of java.lang.Object* Seems like "override" is the wrong word to use and will likely be confusing since we are explicitly disallowing the second one.

Yes, I was contemplating whether "override" was the best phrasing to use in the wording above because of this sort of wrinkle. Instead "abstract method overriding one of the ..." might help distinguish this particular case.

-Joe -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.openjdk.java.net/pipermail/lambda-libs-spec-experts/attachments/20121228/0cc2e100/attachment.html



More information about the lambda-libs-spec-experts mailing list