这不是一个接口,这似乎是一个类(或抽象类,也缺少关键字abstract
),它应该是这样的: -
public interface Foo<T> {
T doSomething();
}
除了
public class Bar implements Foo<Number> { ... }
public class Bar2 extends Bar implements Foo<Integer> { ... }
会给你编译时间的错误, The interface Foo cannot be implemented more than once with different arguments: Foo<Number> and Foo<Integer>
但是,如果你改为: -
public class Bar implements Foo<Integer> { ... }
public class Bar2 extends Bar implements Foo<Integer> { ... }
这不会给一个编译时错误,如果你在BAR2实现doSomething()
它会考虑到这一点,当你做: -
Bar2 bar2=new Bar2();
bar2.doSomething();
否则它将从Bar
运行
doSomething()
,显然,如果你这样做: -
Bar bar=new Bar();
bar.doSomething();
它会考虑到的Bar
考虑doSomething()
,因为它只有一个执行doSomething()
到了这时候,即Bar
(你有因为Bar
实施是实现该接口Foo
:))
“_Now,都允许以下内容吗?_”你不能只是尝试运行这些东西,看看? – csmckelvey 2014-11-24 06:27:09
'Foo'必须是'接口'而不是'类' –
Jens
2014-11-24 06:27:38
我不知道为什么这个问题有负面投票?这个问题的人正在清除我的概念。 – 2014-11-24 07:13:34