假设我在 java 中定义了以下类:
public class A
{
public class B
{
}
public B[] someFunc() {...}
}
我正在尝试在 scala 中访问它,如下所示:
val array: Array[A#B] = a.someFunc()
编译器给了我以下警告:
*类型不匹配; found : Array[aB] required: Array[A#B] 注意:aB <: A#B,但是类 Array 在类型 T 中是不变的。您可能希望研究通配符类型,例如 `_ <: A#B*
我不确定我应该使用正确的语法来克服这个错误。我尝试使用以下内容,但无法编译:
val array: Array[T <: A#B] = a.someFunc()
但是我发现通过将它传递给一个函数来解决这个问题:
def test[T <: A#B](array: Array[T]) = ...
test(a.someFunc())
编译得很好。
如何在不必定义此测试函数的情况下实现正确的类型分配?
谢谢
德斯