【Console Application】ファイルとデータベース 159【学習記】
ファイルとかデータベースの話🤤
(今回脱線してるけど)
→ main をクラスで包みたい場合「エントリーポイント」等で調べると出てくる模様
・ Kotlin の static である companion object として定義する
・そのままだと companion グループになってしまうので特殊な main は @JvmStatic というアノテーションが要る
・ build.gradle の application セクションの mainClass は set() でなくても通るがもしかしたら set 無しの挙動は廃止予定の可能性有り
→ main を Java みたくクラス所属にしようというのはかなり酔狂な手法(コンパニオン句やアノテーションなど不要な追記が多く要るので無駄の多いコーデょング扱いと思われる
#学習記 #Kotlin #アノテーション #エントリーポイント
main のクラス化
それじゃ、気になってた main のクラス化実験するぽ🤤
Kotlin の記事は殆どのものが Android を前提にしていて、それ以外は学習用にコンソールアプリを作るから fun main() をクラスで囲もうなんていう酔狂な記事が無いんだと思う🤪
開いたら Unresolved 出てるんだけど…🙄
プロジェクトの再ビルドやったら消えた😞
ダメなのこういうとこだぞ、 IntelliJ !
で、ついでだけどこの build.gradle.kts の application のとこにある mainClassName って項目😑
これ、 IntelliJ の機能で打ち消し線が出てるけど、多分この名前のクラスであれば通ると思うのよね🤤
つまり、こう🤤
さぁデバグよー👇
………🙄
いいもん、 jar 作ってターミナルで叩くから!😩
………😞
確か基本文法やってる最中に「 Kotlin は基本全て instance 」というのをどこかで見た気がするのよね🤔
素直に解釈するなら現在のクラスは特にこれと言った言語装飾語が付いてないので dynamic なクラス定義になってて static じゃないと困る main は「いいから static にしろよ」って文句を言っている(ただし Java で)………のかな?🙄
static にすれば解決なんだろうか………?😑
………🙄
………
………
………
調べても殆どが fun main() で書くのが当たり前になっててやはり main をクラスで囲もうっていうのは酔狂な試みなんだろうか…🙄
同じ事思う人、居るねやっぱり🤤
でもこの人は「エントリーポイント」という概念からの話題なので自分が望んでいた「 main をクラスで囲むには?」と筋道がだいぶ違う🙄
(結果的に欲しかった答えがこれなので関係ないけど)
この記事を見る限りだとやはり companion object で囲って static 化が要る様だぬ🤤
'@JvmStatic' というアノテーションを加える必要が有るみたい🤔
記事だと build.gradle の mainClass は set というメンバ関数を呼ぶように書いてるけれど要るのかな?🤔
もしかして IntelliJ が初期に吐き出したソースなのに打ち消し線が付いてるのは互換性で残ってるだけで set を付けないといけないんだろうか?とりあえず無しでポチってみる🤤
set 無くても行けるじゃん🙄
もしかしたら廃止予定なのかな?🤔
じゃぁとりあえず、 MainKT じゃなくてプロジェクト名クラスにして Java と揃えておこうかな🤤
次回は
Console とかの標準系から移植を始めようかな🤤