NoSuchFieldError | 江木町の牛舎

江木町の牛舎

~ 田舎者プログラマの日常 ~

現在検証中のため後日また加筆することになると思いますが、
実際にそうなるので多分そうなんだろうと

まぁ、コンポーネントを外部参照可能にしている時点でどうなんだという事だろうと思うわけだが

JFrameに張り付いているJButtonをpublic化している

その状態で他のJFrameやクラスからこのボタンを参照する

その状態でボタンをJMyButtonとかにかえっちゃってみる
(もちろん、JButtonを継承)

で、*そのクラスだけを最新に置換する*

と実行時エラー NoSuchFieldError が発生する


何か全然しらないと フィールドが見えない ってエラーっぽいけど
実際には型違いなんだろう

なぜならば、元々JMyButton のボタンを JButton に変えると
何ら問題なく処理できるから

確か自動型変換しないのがJavaの特性ではなかったか


とはいえ、外部クラスの型を保持しているのね
そこがびつくりなんだが

外部クラスの型を保持しているがゆえに
勝手に外部クラスが型を変えてしまうと
型違いとか変な値になるとかじゃなくて NoSuchFieldError になるわけだ


実に分かり辛い


そんなわけで現在内部的に持っているであろう型が何なのか調べられないものか探索中

あとは仕様上にそんなソースがあるかどうか

「おめぇら、こういう仕様だから、外部公開気をつけろよ(゚Д゚)ゴルァ!!」

的な文章がどこかに無いだろうか

仕事先の人に説明しやすいので

全然理解できてないっぽいから

わかるけどね

単純にフィールドが公開されていないよ、とだけ捉えているぽい回答が回ってきた


型違い

怖いわ