我正在尝试这样做:
public interface Foo<T> {
Stream<String> getAllKeys();
T getItemByKey(String key);
}
但是,类型删除似乎消除了字符串,所以当我调用 getAllKeys
时我得到一个原始的Stream
。
我认为这会起作用,因为这些不是具有相同签名的方法,并且 Stream 类型参数本质上是绑定(bind)的 apparently should therefore get compiled to that type .
有什么方法可以实现这个功能吗,还是Java泛型的缺点?即使转换 Stream 或其元素似乎也效果不佳。
最佳答案
getAllKeys()
只会返回原始 Stream
如果您使用原始 Foo
类型。
另一方面,如果您使用
Foo<Integer> foo = ...
然后
foo.getAllKeys()
将返回 Stream<String>
.
关于java - 是否可以拥有一个带有一个指定类型参数和一个泛型类型参数的 Java 接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59717700/