鉴于此界面:
import com.google.common.base.Optional;
public interface Foo<S extends Bar> {
Optional<S> get();
}
然后我使用Foo
实现了界面:
public class Baz implements Foo {
public Optional<Bippie> get { ... }; // Bippie extends Bar
{
是否有必要在class Baz
上添加参数?为什么或为什么不呢?
答案 0 :(得分:3)
保持Baz
不变,实现原始Foo
接口在技术上是合法的。 Java会将所有泛型视为不存在,并且代码将被编译。
然而,使用原始类型通常是一个坏主意,并且很容易正确实现通用接口,所以就这样做。您不必在类Baz
上提供泛型类型参数:
public class Baz implements Foo<Bippie> {
public Optional<Bippie> get() {
但如果您愿意,可以:
public class Baz<S extends Bar> implements Foo<S> {
public Optional<S> get() {
或者您可以使用Bippie
进一步缩小范围:
public class Baz<S extends Bippie> implements Foo<S> {
public Optional<S> get() {