Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #27400

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

Date 2014-01-26 13:12 -0500
From Arne Vajhøj <arne@vajhoej.dk>
Newsgroups comp.lang.java.programmer
Subject Re: Java 8 question about default and static methods in interfaces
References <JX4Fu.281210$2R1.21049@fx13.iad> <52e505e8$0$294$14726298@news.sunsite.dk>
Message-ID <52e54ff2$0$295$14726298@news.sunsite.dk> (permalink)
Organization SunSITE.dk - Supporting Open source

Show all headers | View raw


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

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Java 8 question about default and static methods in interfaces Wayne <nospam@all.invalid> - 2014-01-26 04:55 -0500
  Re: Java 8 question about default and static methods in interfaces Arne Vajhøj <arne@vajhoej.dk> - 2014-01-26 07:56 -0500
    Re: Java 8 question about default and static methods in interfaces Arne Vajhøj <arne@vajhoej.dk> - 2014-01-26 13:12 -0500
      Re: Java 8 question about default and static methods in interfaces Wayne <nospam@all.invalid> - 2014-01-26 20:37 -0500

csiph-web