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


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

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

From Wayne <nospam@all.invalid>
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> <52e54ff2$0$295$14726298@news.sunsite.dk>
Message-ID <0LiFu.157075$JL1.152266@fx08.iad> (permalink)
Organization Newshosting.com - Highest quality at a great price! www.newshosting.com
Date 2014-01-26 20:37 -0500

Show all headers | View raw


On 1/26/2014 1:12 PM, Arne Vajhøj wrote:
> 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
> 
> 

Thanks!

-- 
Wayne

Back to comp.lang.java.programmer | Previous | Next — Previous 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