2017-05-20 8 views
0

GUIをドラッグして作成しようとしましたが、誤ってサブクラスにComponent.moveを上書きしました。これにより、Component.setLocationが呼び出されるたびにスタックオーバーフローが発生しました。Component.move(int、int)は廃止されましたが、まだ使用されています

私の移動方法の名前を変更した後、これは起こりませんでした。私はmoveを上書きし、それがsetLocationによって呼び出されたことを知りました。

ただし、Oracleドキュメントでは、moveが古くから廃止されていると記載されています。なぜそれはまだsetLocationによって使用されていますか?つまり、setLocationも非推奨になりますか、moveではありませんか?

答えて

0

@Deprecatedと表示されているapiは、将来のバージョンで削除されることを意味します。非推奨のAPIは、ベンダーではなくクライアントの視点からのものです。 moveメソッドが将来削除される場合、ベンダーはsetLocationを自由に変更できますが、クライアントはnew APIを呼び出すコードを更新しないと実行できません。

setLocation@Deprecatedが付いていないということは、将来のjdkでは何も変更せずにプログラムを実行できることを意味します。

0

アプリケーションの下位互換性をサポートするか、またはメソッドがライブラリの将来のリリースで削除される予定であることを開発者に伝えるために、廃止されたメソッドが存在する可能性があります。

廃止予定のメソッド自体はまだ完全に機能していますが、同じことをやりかえるための別の方法があることを示しています。

多くの場合、機能の異なる、まだ廃止予定のメソッドを使用している他のメソッドは、必ずしもそれ自体で廃止されるとは限りません。それらの実装は時代遅れかもしれませんが、APIはそうではありません。

関連する問題