「変換方法...」へ戻る

1.1 AWT の推奨されないメソッド

このドキュメントは 3 つの節からなり、1.1 AWT の推奨されないメソッドを扱う支援をします。

概要

AWTはバージョン 1.0.2 と 1.1 の間で著しく変わりました。古いやり方の一部は推奨されなくなり、将来の重要なバージョンでサポートされない可能性があります。プログラムの変換が充分時間に間に合うように支援するために、Java コンパイラは推奨されない API を使用するプログラムをコンパイルするときに警告を出します。


興味のある方に: AWT は、 AWT ソースコードのドキュメンテーションコメントの @deprecated タグを使用して、推奨されない API にマークを付けます。これらのタグは 1.1 のベータバージョンにはありませんでした。

1.1 コンパイラを使用して推奨されない API を呼び出すクラスをコンパイルするとき、次のような警告が表示されます:

% javac Test.java
Note: Test.java uses a deprecated API.  Recompile with "-deprecation"
for details.
1 warning
%
推奨されない API をプログラムで呼びだしている場所のリストを表示するためには、javac -deprecation を使用します。たくさんの警告が出るかもしれません。 混乱してはいけません! プログラムが長く実行されるにしても、それを変換しようと思うかもしれません。その場合、可能な限り、新たにコードを書くときは新しいAPIを使用するようにします。

AWT プログラムの変換方法と変換理由の詳細については、プ ログラムの 1.1 AWT API への変換方法を参照してください。


注: 1.1.1 の Java コンパイラは、プログラムが推奨されないメソッドを呼び出し、またはオーバーライドするとき必ず警告を出します (次の節で説明する 1 つの例外を除きます)。他方 、1.1 コンパイラは、プログラムが推奨されないメソッドを呼び出しするときだけ警告を出し、オーバーライドするときは警告を出しませんでした。例えば、プログラムが action メソッドをオーバーライドする場合、action の実装のほとんどがスーパークラスの実装を呼び出さないため、1.1 コンパイラは通常警告を出しませんでした。

推奨されないメソッドのオーバーライド

次のような状況に置かれていると考えてみてください: このような状況では、推奨されないメソッド、またはその置換のメソッド、どちらのバージョンをオーバーライドするか迷うかもしれません。単純に置換をオーバーライドする場合、ユーザのコードはそれを呼び出す 1.0 コードに対して正しく機能しないでしょう。(1.0 コードがそのメソッドを呼び出さない場合には、この状況は問題ありません。) 単純に推奨されないバージョンをオーバーライドする場合、コンパイル時に警告が出され、1.0 従属をコードに埋め込む必要があります。

この場合、両方のメソッドをオーバーライドする必要があります。推奨されないメソッドをオーバーライドして置換メソッドを呼び出すようにし、また置換メソッドをオーバーライドして適切な機能を提供するようにします。推奨されないメソッドを実装するときに、@deprecated ドキュメンテーションタグを使用し、後方互換を提供するために意図的にメソッドをオーバーライドしているということを示します。例えば:

/** @deprecated */
public Dimension preferredSize() {
    return getPreferredSize();
}

public Dimension getPreferredSize() {
    ...//implementation goes here
}
この状況ではループホールが活用できます: コンパイラは、推奨されないメソッドをオーバーライドし、かつオーバーライドするメソッドを推奨されないメソッドとしてマークしたとき、警告を出しません。例えば、前にあるコードはコンパイルしても警告が出ません。しかし、前のコードを呼び出すコードをコンパイルする場合、推奨されないという警告が出ます。

この節で説明するソリューションによって、後方互換のコードを書くことが容易になり、コンパイルが明瞭になり、理解し易くなります。1.0 互換を提供する必要がなくなったときには、推奨されないコードを簡単に見つけて削除できます。

AWT 1.1 の推奨されないメソッドの一覧表

この節では、すべての推奨されない AWT メソッドおよびその 1.1 の置換をリストアップします。 updateAWT という名前のスクリプトが最も簡単な置換をしてくれます。このスクリプトの操作と例については、プログラムの 1.1 AWT API への変換方法を参照してください。

この節の表と同様のものが 単純な名前変更にあります。その表の情報量はこの表より少なくはありますが、1.1 列で英字化されスクリプトが行った不正な変更を簡単に取消す支援をします。

次の表で、太字フォントのメソッド名は優先するメソッド名です。イベント処理 メソッドの有効な 1.1 の代替の一部は、他の 1.1 ソリューションに比べて優先度が低くなります。例えば、gotFocusprocessFocusEventで置換できますが、 FocusListener に実装されている focusGained で置換することを薦めます。このことは イベント処理コードの変換方法で説明しています。

推奨されないメソッド 推奨されないメソッドのあるクラス 1.1 の置換
action Component アクションイベントの処理例については、イベント処理コードの変換方法を参照
allowsMultipleSelections List isMultipleMode
appendText TextArea append
bounds Component getBounds
clear List removeAll
countComponents Container getComponentCount
countItems Choice, List, Menu getItemCount
countMenus MenuBar getMenuCount
deliverEvent Component, Container dispatchEvent
disable() MenuItem setEnabled(false)
enable() Component, MenuItem setEnabled(true)
enable(expression) Component setEnabled(expression)
getBoundingBox Polygon getBounds
getClipRect Graphics getClipBounds
getCurrent CheckboxGroup getSelectedCheckbox
getCursorType Frame Component 内の getCursor メソッド
getLineIncrement Scrollbar getUnitIncrement
getPageIncrement Scrollbar getBlockIncrement
getPeer Component 置換なし
getVisible Scrollbar getVisibleAmount
gotFocus Component processFocusEvent
イベント処理を優先する方法については、イベント処理コードの変換方法を参照
handleEvent Component processEvent
イベント処理を優先する方法については、イベント処理コードの変換方法を参照
hide Component setVisible(false)
insertText TextArea insert
insets Container getInsets
inside Component, Polygon, Rectangle contains
isSelected List isIndexSelected
keyDown Component processKeyEvent
イベント処理コードの変換方法を参照
keyUp Component processKeyEvent
イベント処理コードの変換方法を参照
layout Component, Container, ScrollPane doLayout
locate Component, Container getComponentAt
location Component getLocation
lostFocus Component processFocusEvent
イベント処理コードの変換方法を参照
minimumSize Component, Container, TextArea, TextField getMinimumSize
mouseDown Component processMouseEvent
イベント処理コードの変換方法を参照
mouseDrag Component processMouseMotionEvent
イベント処理コードの変換方法を参照
mouseEnter Component processMouseEvent
イベント処理コードの変換方法を参照
mouseExit Component processMouseEvent
イベント処理コードの変換方法を参照
mouseMove Component processMouseMotionEvent
イベント処理コードの変換方法を参照
mouseUp Component processMouseEvent
イベント処理コードの変換方法を参照
move Component, Rectangle setLocation
nextFocus Component, Container, Window transferFocus
postEvent Component, Window dispatchEvent
preferredSize Component, Container, TextArea, TextField getPreferredSize
replaceText TextArea replaceRange
reshape Component, Rectangle setBounds
resize Component, Rectangle setSize
setCurrent CheckboxGroup setSelectedCheckbox
setCursor Frame Component 内の setCursor メソッド
setEchoCharacter TextField setEchoChar
setLineIncrement Scrollbar setUnitIncrement
setMultipleSelections List setMultipleMode
setPageIncrement Scrollbar setBlockIncrement
show() Component setVisible(true)
show(expression) Component setVisible(expression)
size Component getSize


「変換方法...」へ戻る
By Kathy Walrath