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
> 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