我正试图做到这一点:
public interface Foo<T> {
Stream<String> getAllKeys();
T getItemByKey(String key);
}
然而,类型擦除似乎会去除字符串,所以当我调用getAllKeys
时,我会返回一个原始流。
我认为这是可行的,因为它们不是具有相同签名的方法,而且流类型param本质上是绑定的,因此显然应该编译为该类型。
有什么方法可以让这个工作,或者这是Java泛型的缺点吗?甚至铸造流或其元素似乎也不太好。
如果使用原始Foo
类型,则getAllKeys()
只会返回原始流。
另一方面,如果你使用
Foo<Integer> foo = ...
然后
foo.getAllKeys()
将返回
流
我有一个(相当复杂的)数据类型: 现在我发现自己需要另一个数据类型…有两个构造函数。一个与的相同;另一个只存储一个。我有什么选择? 虽然这会起作用,但它也允许类似这样的东西,这是没有意义的。
问题是: 创建一个名为Duo的泛型类,它有两个参数a和B。声明一个名为a类型的第一个变量,以及一个名为B类型的第二个变量。创建一个接受这两个参数的构造函数。在构造函数中,将这些参数分别分配给声明的变量。 这是我能想到的解决方案: 然后,当我继续问下一个问题时,我被绊住了。问题是: 使用问题4中的Duo类声明并创建两个对象,如下所示: a) 第一个名为sideShape的对象分别由字符串类型和整数类
编译以下Java代码: 此外,编译以下代码: 以下代码将给我一个编译错误: 因此,看起来,如果其中一个边界类型本身是类型参数,就不可能有多个边界。但为什么呢? 据我所知,如果声明了多个边界,那么最多一个边界可能是一个类(其他所有边界都是接口),并且它必须是第一个边界。 但是,既然在我的示例中是一个接口,为什么编译器会抱怨呢?毕竟,T是接口还是类应该没有任何区别。 我试图在网上找到答案,但显然我的谷
null 我可以推断,在Java中,这种类型的方法可以应用于带有一个参数的函数接口。 还有,有没有一个参数函数接口的例子,函数有一个参数,不像上面的例子?
问题内容: 我想知道是否有可能编写一个接受多种通用类型的函数,如下所示: 那行得通吗?每个参数中的泛型是否意味着每个参数必须具有与泛型相同的类型T? 问题答案: 是的-可能的(虽然不是使用方法签名),是的,使用签名的类型必须相同。 使用给定的签名,必须在呼叫站点将其与单个类型(例如 或 )相关联。但是,您可以声明采用多个类型参数的方法签名 请注意,在上面的签名中,我已经声明了类型以及签名本身。因此
主要用途是为了方便,在函数内部有小的内联函数。 我环顾了谷歌,检查了Java的函数包,但是没有找到。这可能吗?