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())
これは正常にコンパイルされます。
このテスト関数を定義せずに、正しい型割り当てを達成するにはどうすればよいでしょうか?
ありがとう
デス