開発者がJDKの一部であるJavaクラスを拡張して新しいメソッドを追加する場合、将来のバージョンのJavaで同じ名前/シグネチャを持つメソッドが導入される可能性があります。これらの将来のバージョンで実行されます。誰かが新しいバージョンのJDKでコードをコンパイルしたときに起こりうる問題を検出する "非上書き"アノテーション(http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7152222を参照)がないため、開発者はこのチェックを別の方法で行う必要があります。 どのアプローチを使用していますか?将来のJavaバージョンへの更新を活用するために、独自のプログラムでどのようなアプローチを使用しますか?
答えて
JDKのクラスを拡張するための反パターンですが、拡張するために特別に設計されたクラスは例外です。代わりに、Decoratorパターンを使用して、JDKクラスに機能を追加する必要があります。 JDKは特別なケースではありません。これはサードパーティのライブラリでも同様です。
+1 - 今後拡張される予定のないクラスを拡張する方法はありません。最善のアプローチ?まったくやってはいけません! –
具体的なJDKクラスはjava.awt.Windowであり、具体的なメソッドはgetType()でした。一般的に私はあなたに同意しますが、この特別なケースではWindowクラスを拡張することが唯一の可能性であると思います。 – mschenk74
@ mschenk74 'Window'は完全なGUIコンテナクラス階層の基底であるため、サブクラス化しても何を達成するのか分かりません。残りのJDKは' Windowあなたのカスタムサブクラスからではありません。 –
継承は強力な手法ですが、知識が不足すると悪化する可能性があります。したがって、この場合は継承の代わりに合成を使用する必要があります。拡張する任意のjavaクラスのオブジェクトを含むクラスを作成し、そのクラスをorignalクラスではなく新しく作成したクラスに拡張します。
- 1. 将来の使用のためにメタモデルを保存する
- 2. 将来の変換のフレームをどのように決定しますか?更新:よりエレガントな方法?
- 3. 将来どのように例外をテストできますか?
- 4. 将来の使用のためにsuperへの呼び出しを変数に保存するとどうなりますか?
- 5. 将来の日付にMySQLテーブルの値を更新するにはどうすればよいですか?
- 6. 将来のユーザーフレンドリーなオペレーティングシステムのバージョンを取得するにはどうすればよいですか?
- 7. Ag-Grid - 将来の使用のために列を保存する
- 8. 将来のバージョンのVisual Studioランタイムがインストールされているかどうかをプログラムで確認する
- 9. Apacheの将来のバージョン
- 10. 独占のようなゲームボードを描くためにどのようなレイアウトが使用されますか
- 11. Nodejs - アプリケーションでデータベースから値を取得して、将来使用するため
- 12. javaで将来のタスクをキャンセルする
- 13. 独自のプログラミング言語でVDSOオブジェクトを活用するには?
- 14. ColdFusion:独自の「独自のJavaクラス」の使用について
- 15. プログラムで将来の値を正しく実行するにはどうすればよいですか?
- 16. Java 3Dの将来は何ですか?
- 17. ユーザーがREST APIを使用して独自のプロファイルを更新できるようにする
- 18. どのような大きなデータツールやアプローチを使用するのですか
- 19. 引数を渡すためにどのアプローチを使用するのですか
- 20. サービスを開始して自分の活動で使用するためにアプリケーションクラスを使用するにはどうすればよいですか?
- 21. どのようなhtmlバージョンを使用しますか?
- 22. 将来のバージョンから過去のバージョンにgitパッチを適用するにはどうすればよいですか?
- 23. 角度mvvmパターンでビューを更新するためにどのようなメカニズムが使用されますか?
- 24. ユーザーが独自のフィールドを作成できるようにするための最善のアプローチ
- 25. ヒストリカルデータを使用した将来の売上の予測分析
- 26. Akka:新しいHttpRequestsを作成するためのHttpResponseの将来のマップ
- 27. 将来の使用のためにMongooseスキーマ/モデル(ドキュメントではありません)を保存しています
- 28. PHPを使用して将来の日付を計算する()
- 29. aws-java-sdk-s3を独自のドメインで使用するには?
- 30. データベースアクセスの将来の使用方法
どのJavaクラスを拡張しようとしていますか?たぶんあなたがユースケースをより詳細に指定できるかどうかについてのアドバイスがあります。 – vikingsteve
getType()メソッドがJDK7で導入されたJDK6からJDK7への移行中に問題が発生しました。私たちのコードには、既にgetType()メソッドを持っていたjava.awt.Windowを拡張したクラスがいくつかありました。 – mschenk74