【发布时间】:2011-11-04 20:24:08
【问题描述】:
是否可以在 Scala 中创建一个类型别名(或等效的东西),它接受两个参数并返回它们的公共超类型?换句话说,我正试图找到带有这个签名的东西:
type CommonSupertype[A, B] // can't be more specific
这些都成立:(伪代码)
CommonSupertype[String, Int] = Any
CommonSupertype[JButton, JPanel] = JComponent
等等
我自己找不到,但我不能使用其他方法,比如添加额外的参数,因为我必须遵循预先指定的界面。
【问题讨论】:
-
给我们一个带有示例代码的用例,以便我们解决问题。
-
这是不可能通过类型别名实现的,但在上下文中,您可以做一些具有类似效果的事情......所以我回应@Jean-PhilippePellet 询问一个或两个用例.
-
是的:
type CommonSupertype[A, B] = Any。但我认为您可能正在寻找最少常见的超类型...... -
两种类型不一定有一个最不常见的超类型(想想多个特征)。或者那会是最常见的超类型吗?
-
用例示例很复杂(很多文件),所以我必须简化一下。正在努力。 @michid 我的意思是最不常见的超类型。