如何引用具有多个边界的通用返回类型。
如何引用具有多个边界的通用返回类型。
我最近发现可以声明一个同时受接口约束的返回类型。考虑以下类和接口:
public class Foo { public String getFoo() { ... } } public interface Bar { public void setBar(String bar); }
我可以像这样声明一个返回类型:
public class FooBar { public staticT getFooBar() { //一些返回 Foo 对象的实现, //该对象必须实现 Bar 接口 } }
如果我从某处调用该方法,我的IDE会告诉我返回类型具有方法 `String getFoo()` 和 `setBar(String)`,但只有在我在函数后面加上圆点时才会显示可用的方法:
FooBar.getFooBar(). // 这里IDE会显示可用的方法。
有没有办法获取这样一个对象的引用?我的意思是,如果我做类似这样的事情:
// bar 只有 setBar(String) 方法 Bar bar = FooBar.getFooBar(); // foo 只有 getFoo():String 方法 Foo foo = FooBar.getFooBar();
我想要有一个引用,类似于这样(伪代码):
fooBar = FooBar.getFooBar(); // 或者 $1Bar bar = FooBar.getFooBar(); // 或者 Foo&Bar bar = FooBar.getFooBar();
在Java中是否有可能实现这样的功能,还是我只能声明返回类型?我认为Java也必须对其进行类型标注。我不想使用像下面这样的包装器,因为感觉像是作弊:
public class FooBarWrapperextends Foo implements Bar { public T foobar; public FooBarWrapper(T val){ foobar = val; } @Override public void setBar(String bar) { foobar.setBar(bar); } @Override public String getFoo() { return foobar.getFoo(); } }
Java真的发明了这样一个很好的特性,但忘了人们可能希望有一个对它的引用吗?