Kotlinで最初の一歩を踏み出し、単純な文字列分割関数を作成しようとしています。私はこれから始めました:
fun splitCSV(s : String) : Array<String> {
return s.split(",");
}
私はこれもこのように書くことができると思います:
fun splitCSV(s : String) : Array<String> = s.split(",");
しかし、s.splitがではArray<String?>?
なくを返すため、タイプエラーが発生しますArray<String>
。キャストを行う簡単な方法が見つからなかったので、変換を行うためにこの関数を作成しました。
fun forceNotNull<T>(a : Array<T?>?) : Array<T> {
return Array<T>(a!!.size, { i -> a!![i]!! });
}
fun splitCSV(s : String) : Array<String> = forceNotNull(s.split(","));
ただし、実行時エラーが発生します。
ClassCastException:[Ljava.lang.Object; [Ljava.lang.Stringにキャストできません
TforceNotNull
をStringに変更すると機能するので、解決策に近づいていると思います。
これはそれについて行く正しい方法ですか?もしそうなら、どうすればforceNotNull
一般的なケースで動作するように修正できますか?