- PR -

コンポーネントのshowメソッドについて

1
投稿者投稿内容
ぽち
会議室デビュー日: 2008/04/07
投稿数: 2
投稿日時: 2008-04-07 20:09
java1.5から
「show()」が推奨されておらず、
その代わりに「setVisible(true)」
を使ったほうがいいとなっていますが、
もしこのままshow()を使う場合はどういう事象が起こる可能性があるのでしょうか。

不具合の原因分析で調査中です。

宜しくお願いします。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2008-04-07 23:42
あんまりAWTは詳しくないですが、SunのJDK5のjava.awt.Componentのコードを見る限り、
setVisible(boolean)はshow()に委譲しているだけです。

Componentを継承したオブジェクトが、setVisible(boolean)を呼び出される事を前提として、
オーバーされている場合、show()の呼び出しと動作に違いがでます。

ちなみに、Javadocを見ると1.5ではなく1.1から非推奨となっています。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2008-04-08 09:58
こういった非推奨メソッドは互換のために残されていますが、
中身は新しいメソッドへの委譲となっていることが多くあります。
表向きのメソッドの形はそのままに、中身は入れ替わっているわけですね。

1.1から非推奨のようなので、1.0のソースを確認すると違いが分かるかもしれません。
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2008-04-08 10:11
他の方が書かれていますが、肝心な所が抜けていると思ったので(詳しくないながら)ちょっと補足を
引用:

ぽちさんの書き込み (2008-04-07 20:09) より:
もしこのままshow()を使う場合はどういう事象が起こる可能性があるのでしょうか。


APIや、メソッドをいきなりあるバージョンから「使えなく」すると、互換性に問題が出てくるので、ある程度の準備期間をもうける意味で「非推奨」としている訳です。
つまり、次のバージョンでそのメソッドが残っているかは保証しないという事なので、そのままのソースを次のバージョンでコンパイルしてみたらエラーが出る可能性がある、という事です。
ぽち
会議室デビュー日: 2008/04/07
投稿数: 2
投稿日時: 2008-04-08 16:28
返信ありがとうございます。
おかげさまで非常に参考になりました!

みなさんから教えていただいたことを基に調査をしてみます。
1

スキルアップ/キャリアアップ(JOB@IT)