私は、ライブラリ内のこれらのクラスがあります。渡すスカラ `JavaのジェネリックメソッドにComparable`配列
// This is java
public abstract class Property<T extends Comparable<T>> {
public static Property<T> create(String str) { /* Some code */ }
}
public class PropertyInt extends Property<Integer> {
public static PropertyInt create(String str) { /* Some code */ }
}
public class PropertyDouble extends Property<Double> {
public static PropertyDouble create(String str) { /* Some code */ }
}
をし、私が使用したいProperty
のリストを取る方法があります:
public void state(Property... properties) {
/* some code */
}
上記はライブラリからのものなので変更できません。 Scalaで は、私がvoid state(Property...)
に配列を渡すためにしようと、次のコードを持っている:
// This is scala
val propertyInt = PropertyInt.create("index")
val propertyDouble = PropertyDouble.create("coeff")
state(Array[Property](proeprtyInt, propertyDouble)))
コードの最後の行にエラーがある:Type mismatch, expected Property[_ <: Comparable[T]], actual Array[Property]
私はこれをどのように修正すればよいですか?
注:これは、より複雑なコードの簡略化されたバージョンです。実際のコードではProperty<T extends Comparable<T>>
がIProperty<T extends Comparable<T>>
とIProperty
のインタフェースを実装しており、これはstate
の引数となります。
編集:以下
val properties = Array(propertyInt.asInstanceOf[IProperty[_ <: Comparable[_]]],
propertyDouble.asInstanceOf[IProperty[_ <: Comparable[_]]])
state(properties)
はあなたが必要とするどのようなエラーに
Error:(54, 33) type mismatch;
found : Array[Property[_ >: _$3 with _$1 <: Comparable[_]]] where type _$1 <: Comparable[_], type _$3 <: Comparable[_]
required: Property[?0] forSome { type ?0 <: Comparable[?0] }
state(properties)
^
私は 'state'のコードを変更することはできません。それは図書館からのものです。 –
@HenryW。、あなたは 'Property > ...'をとり、 'Property []'を返すあなたのJavaコードでヘルパーメソッドを作成できますか? – Aivean
@HenryW。、実際には、気にしないで、アップデートを見てください。 – Aivean