在Scala中,您可以这样定义一个类:
在这段代码中,类型参数“T1”表示需要一个类型参数“T2”的类型,因此我们可以像这样创建一个实例:
我想在Java中实现这个,但我没有任何思路。
我想知道在Java中是否可能实现,如果不行的话,有什么办法可以在Java中实现这个。
根据我的理解,泛型类型本质上是一种类型函数。因此,如果您有一个类似于
上面的
当然,如果我允许重复一些代码,这可能并不是必要的,但为了使代码更加通用,我认为这是不可或缺的。
class MyClass[T1[T2]] {
def abc(a1: T1[Double]):T1[Int] = ???
}
在这段代码中,类型参数“T1”表示需要一个类型参数“T2”的类型,因此我们可以像这样创建一个实例:
new MyClass[List]
。我想在Java中实现这个,但我没有任何思路。
我想知道在Java中是否可能实现,如果不行的话,有什么办法可以在Java中实现这个。
根据我的理解,泛型类型本质上是一种类型函数。因此,如果您有一个类似于
List<T>
的类,您可以将该类List
视为类型函数,因此List
接受一个类型参数,例如Integer
,那么它将是一个具体类型,如整数列表(List<Integer>
)。上面的
MyClass
采用了类型参数T1
,但我希望这个T1
也是一个采用类型参数T2
的泛型类型,这样我就可以像这样创建一个实例:MyClass<List>
并在MyClass
中使用类型,例如List<Integer>
或List<Double>
。在Scala中,如果尝试MyClass[Int]
或MyClass[String]
将失败,因为Int
或String
不采用类型参数。当然,如果我允许重复一些代码,这可能并不是必要的,但为了使代码更加通用,我认为这是不可或缺的。
class MyClass<T1<T2>>
并在方法中返回T1<Integer>
?你如何在编译时指定T1
是一个多态类型。 - JatinJava使用尖括号表示泛型类型
,这意味着你只需要用<>
替换[]
即可。这是众所周知的。而提供一个通用的泛型教程
参考就像提供维基百科页面链接一样,这有什么帮助呢? - Jatinclass MyClass<T1<T2>>
在Java中无法编译,因为默认编译器只考虑泛型类型中的一个级别。我认为这是一个很好的问题。 - Jatin