这是一个现有的接口:
public interface MyInterface<T, U> {
public T foo(U u);
}
我想在假设 T 和 U 是同一类型的情况下实现这个接口。我想也许我可以将类型参数保持原样,然后只要我只用两个相同类型的实例实例化这个特定的实现,它就可以工作:
public class MyOuterClass<A> {
public class MyClass<T, U> implements MyInterface<T, U> {
@Override
public T foo(U u) {
return u; //error here
}
//even though in the only instantiation of MyClass, T and U are the same
private MyClass<A, A> myInstance = new MyClass<A, A>();
}
但是,也许不出所料,这不起作用,因为类型 T 和 U 不兼容。
所以然后我想也许我可以通过将 MyClass 更改为类似或类似的东西来更改 MyClass 以指定其类型始终相同MyClass<A, A> implements MyInterface<A, A>
,但是我收到错误说 T 已经定义。
有没有办法实现 MyClass 以使其两种类型相同?
(比起 Java,我更像是一个 C++ 人,如果我在这里遗漏了一些关于 Java 泛型的基本知识,很抱歉。)