On 1/26/2014 7:56 AM, Arne Vajh??j wrote:
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.
Syntax must be intended for:
public class DefMet2 {
public static void main(String[] args) {
Bar o = new C();
o.method();
}
}
class C implements Foo, Bar {
public void method() {
Foo.super.method();
Bar.super.method();
System.out.println("C.method");
}
}
interface Foo {
default void method () {
System.out.println("Foo.method");
}
}
interface Bar {
default void method () {
System.out.println("Bar.method");
}
}
Arne