【发布时间】:2016-03-23 23:59:21
【问题描述】:
我有一个通用接口,我似乎无法为它制作一个通配符捕获助手,这让我发疯了。
我有一个界面:
public interface Foo<T extends Bar> {
boolean isA(T t);
T B();
}
它的实现是这样实例化的:
private Foo<? extends Bar> foo = new FooImpl();
这两个不能改变,显然我不能直接访问 FooImpl()。假设使用 FooImpl(),接口接受并返回 FooBar,它扩展了 Bar。
在我的代码中使用“foo”时出现编译问题:
if ( foo.isA(foo.B()) ){ //whatever }
其中 foo.B() 返回类型 FooBar。
我知道这是一个通配符捕获错误,需要一个助手,但我不知道如何设置。类中没有实例化 'foo' 的方法,其中 'foo' 是一个参数,这似乎是大多数帮助程序的编写方式。 'foo' 仅用于获取 FooBar 对象,以及测试 FooBar 对象。
非常感谢任何帮助,我希望我很清楚。谢谢!
【问题讨论】:
-
你能贴出FooImpl的代码吗?所以我们肯定知道你创建了一个什么实例。
标签: java generics interface wildcard