【Console Application】ファイルとデータベース 187【学習記】
ファイルとかデータベースの話🤤
→予想通り、リフレクションで困難を極めそうな DBAccessor の移植が始まる🙄
#学習記 #Kotlin #reflection #可変長引数
DBAccessor
最後の移植クラスにとりかかろうね🤤
このクラスは初歩の学習者にあるまじきリフレクションを使っているのでそこがどれくらい移植しやすいのかで移植の進む速さが変わる🙄
通常のプラグラムではクラスは名前を固定で書き込んでコンパイルして動かすんだけど、今回は Record 派生のクラス名は DBA からは分からないので初期化するときにその情報を引数にして目的の派生後クラスのインスタンスを生成したいのでそこでリフレクションという概念が要るぽ🤤
クラス説明と import だけまず移植🤤
Array や List は未使用のままになるかな?🤔
互換で List は使うかも🙄
メンバー移植したけど `Class<?>` のとこ、不安しかない😞
? の部分 Kotlin 方式に書き換えが要るんだけど調べてないのでとりあえず Java の書き方のまま🙄
後から改造で追加した部分なので先行で作った機能ありきですぐ移植できない系😞
つまり、ソースコード的には美しくなかった…ある程度考えて並べてた筈だけど意外な事実🙄
まぁ、そんな簡単に綺麗なソースにできたら誰も苦労しないよね🤤
Java の DBAccessor 見ると複数のコンストラクタから _init を呼ぶ方式になってる🤔
でも Kotlin は初期値を書ける上にコンストラクタ自体をオーバーロードできるので _init の呼び方を省略できる…のかな🤤
今回は移植なのでコンストラクタに直書きせずに _init を呼ぶという方法は維持しようと思うけどセカンダリコンストラクタは this で略値呼びする形にできると思う🤔
最終的には完全装飾型のコンストラクタ(プライマリ)だけが _init を呼ぶ、という方式に…🤤
(オーバーヘッドを気にしてはいけないw)
Kotlin の残余引数ってどう書くんだろ…🤔
なんでめんどくさい方に作り変えるの…そういうのやめてほしい😞
Java の文が通ってしまってるけどちょっと調べると Kotlin では Class じゃなく KClass となっているので Kotlin としてのリフレクションに書き換えるならこのままではダメかなと思う🙄
今回の学習は「 Java の文が通るならそのままでいいや」ってワケにはいかないから書き換えないとね🙄
JDBC のとこは資料が全く無いしそもそもあれは Java と同じ使い方しか想定されてないっぽいのでそのまま😞
ひとまずコンストラクタ外で初期化してるので lateinit 付け🤤
文字数多いから late で通るようにならないかなと思わなくもない🙄
次回は
ひとまず移植を進めて直すのは後回し🤤