クラスを配列にして条件でファイル名を並び替えをさせていたが取り出すと””空文字なってしまった。
JavaのコードをKotlinに自動変換してエミュレータで実行したがエラーは出ていなかった。
しかし、正常にデータを取り出せない。
Kotlinのコンストラクタの説明を読むがよく分からない。
仕方ないのでコードを書き換えて試す。
class MyNumbersInString() {
var numbersData: Int
MyNumbersInString(f: File) {} を書き直す。
constructor(a: type) : this() {}
constructor(a: type, b: type) : this() {}
constructor(a: type, b: type, c: type) : this() {}
}
class Sub() {
var list = ArrayList< MyNumbersInString >()
var f: File
省略
list.add( MyNumbersInString(f) )
}
constructor(引数) : 戻り { コード } こんな感じ?
コードの一部分。
class MyNumbersInString() {
private var _absName = String()
val absName: String
get() = _absName
private var _name1 = String()
val name1 : String
get() = _name1
//省略
// MyNumbersInString(f: File) { 無変換だったものを
constructor(f: File) : this() { // これに書き換えると正常になった
_absName = f.absolutePath
_name1 = f.name
//省略
}
}
class Dummy() {
private var _fileNameList = ArrayList<MyNumbersInString>()
省略
_fileNameList.add( MyNumbersInString(file) )
省略
_fileNameList[0].absName // constructor()に書き換えで正常にデータを取り出せた
}
自動変換も万能ではない事が分かった。
異常が出たら検証をしつつ、コード変更を行う。