考虑以下人为的Java示例:
public class Example {
private final Object value;
private final List<?> aListOfTheseThings;
public <T> Example(final T t, final List<T> aListOfTheseThings) {
this.value = t;
this.aListOfTheseThings = aListOfTheseThings;
}
}
在这个例子中,我关心的内容如下:
Example
没有进行参数化- 构造函数已经进行了参数化,并确保无论您传入什么,列表都是用与
t
相同类型进行参数化的
(这只是一个假想的例子,我并不真正关心(2)
,但我确实很关心在类的定义中没有提及的类型参数)。
现在在Scala中,我尝试了以下操作:
class Example private[this](
private val value: AnyRef,
private val aListOfTheseThings: List[_]) {
def this[T](t: T, aListOfTheseThings: List[T]) {
this(t, aListOfTheseThings)
}
}
然而这是不可能的。显然,类型参数在构造函数中是无效的(在this
中)。
有没有可能将上述Java代码翻译成Scala?
apply[T]
工厂方法怎么样? - Seth Tisue