在Scala中,你可以定义一个类,因为这: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>
创建一个实例,并且可以使用类型像List<Integer>
或List<Double>
内MyClass
。在斯卡拉,如果您尝试MyClass[Int]
或MyClass[String]
将失败,因为Int
或String
不带类型参数。
当然,如果我允许复制一些代码,但可以制作更通用的代码,我认为这是不可或缺的。
@ dimo414你错了。他的意思是:他可以做'class MyClass>'和方法返回'T1 '?你如何在编译时指定'T1'是一个多态类型。 –
Jatin
2014-11-06 06:13:07
@贾丁,我究竟是错的?我做了一个事实陈述,即Java使用尖括号来表示泛型,并提供了一些资源来了解更多信息。我没有试图回答这个问题,这就是为什么我发布*评论*而不是*答案*。 – dimo414 2014-11-06 06:21:48
@ dimo414问题中的代码是一个Scala代码,Scala使用方括号。对不起,误导。 @贾丁是对的。我想知道是否可以定义一个像class class MyClass这样的类。 –
JJS
2014-11-06 06:22:42