dimanche 26 janvier 2014

Re: Java 8 question about default and static methods in interfaces topic




On 1/26/2014 4:55 AM, Wayne wrote:
> public interface Foo {
> default void method () {
> System.out.println("Foo.method");
> }
> }
> public interface Bar extends Foo {
> default void method () {
> System.out.println("Bar.method");
> }
> }
>
> The question is, can Foo.method be used from Bar.method?
> In other words, is the following version of Bar legal?
>
> public interface Bar extends Foo {
> default void method () {
> super.method();
> System.out.println("Bar.method");
> }
> }


Well - the following compiles and run with Java 8 EA something:

public class DefMet {
public static void main(String[] args) {
Bar o = new C();
o.method();
}
}

class C implements Bar {
}

interface Foo {
default void method () {
System.out.println("Foo.method");
}
}

interface Bar extends Foo {
default void method () {
Foo.super.method();
System.out.println("Bar.method");
}
}

Note the use of Foo.super instead of just super.

Arne







Aucun commentaire:

Enregistrer un commentaire