Default methods in multiple parents (original) (raw)
Zhong Yu zhong.j.yu at gmail.com
Sun Apr 7 08:41:13 PDT 2013
- Previous message: lambda-dev Digest, Vol 41, Issue 26
- Next message: Default methods in multiple parents
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Consider this example of diamond inheritance
interface NumberInterface
{
default Number foo(){ return 1; }
}
interface IntegerInterface extends NumberInterface
{
default Integer foo(){ return 2; }
}
static class NumberClass implements NumberInterface
{
}
static class IntegerClass extends NumberClass implements
IntegerInterface { }
The code compiles and works. However I am a little uncertain. My doubt is
this: arguably, NumberClass "contains" a method Number foo()
.
IntegerClass skips that foo()
method in its super class and inherits a
foo()
from a super interface, is that justifiable? Actually, if we copy
NumberInterface.foo(){} into NumberClass,
static class NumberClass implements NumberInterface
{
public Number foo(){ return 1; }
}
a seemingly innocent move, suddenly IntegerClass cannot compile anymore (due to incompatible return types).
Could someone confirm that the original example works correctly according to the spec? (I hope so since I'm depending on it.)
Thanks, Zhong Yu
- Previous message: lambda-dev Digest, Vol 41, Issue 26
- Next message: Default methods in multiple parents
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]