私は未解決の参照エラーが発生するため、次のコードを記述しますが、動作しません。コトルのコンパニオンオブジェクトを持つ汎用拡張クラス
class Chromosome {
constructor() {}
companion object {
fun newInstance(): Chromosome {
return Chromosome()
}
}
}
class Population<T>(size: Int) where T: Chromosome {
var population: Array<T> = Array(size, { _ -> T.newInstance() })
}
特定のクラスまたはインターフェイスを拡張する汎用タイプTが必要です。私はT()
をの配列のクラスコンストラクタに書くことができないので、静的なファクトリメソッドを呼び出す必要があります。 クラスがデフォルトのコンストラクタを呼び出すクラスをラップする方法はありますか?
私は別のアプローチを試みましたが、それでも動作しません。 reified型パラメータとして 'T'を使用できません。代わりにクラスを使用エラー。
class Population<T>(size: Int, init:() -> T) where T: Chromosome {
var population: Array<T> = Array(size, { _ -> init() })
}
私は 'ClassY'が'クラスY'だと思います。右? –
これはKotlinのようにJavaでは問題があります。どのようにこれをJavaで正確に実装しますか? – tynn
@tynn良い質問です。私はJavaで実装しようとしましたが、動作しません。だから、あなたはこれが両方の言語で問題があると言ったときに正しいです。 – Mpac