-- / --
--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

12 / 05
Thu

Ziphil です。

また Kotlin の謎の挙動に遭遇したので、 メモしておきます。

どうやら、 1 つのクラスに、 例えばプロパティ foo とメソッド getFoo を両方定義すると、 コンパイルは通りますが、 実行時に ClassFormatError が投げられるようです。 原因は不明ですが、 おそらく Java のバイトコードを生成する際に、 内部で getFoo を定義しているのだと思います。

まあ、 Kotlin 使っているなら、 ゲッタやセッタはいちいち書かないでしょうし、 この問題に直面することはほとんどないでしょうけどね。 私の場合、 Java との一貫性を保つためにゲッタをいちいち書いていたので、 この問題にぶつかりましたが。 じゃ、 どうしていまさらこれに気づいたかというと、 これまではちょっとした諸事情で、 プロパティの変数名の最初にアンダバーをつけていたためです。 さすがにこれでは Kotlin の慣習を壊しすぎだと思い、 全コードのアンダーバーを削除して実行したら、 エラーになったわけです。 原因が分かるまで 30 分くらい悩みました。

ちょっと困ってます。 ゲッタやセッタを手動で書かずに、 Kotlin の機能を活用すれば良いんですけど、 Java 由来のクラスの get, set で始まるメソッドはそのままなので、 統一感がなくなっちゃうんですよね。

スポンサーサイト

comment ×0
コメント
管理者にだけ表示を許可する
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。