Observer は Java 9 では非推奨です。代わりに何を使用すればよいでしょうか? 質問する

Observer は Java 9 では非推奨です。代わりに何を使用すればよいでしょうか? 質問する

Java 9がリリースされ、Observer非推奨になりました。それはなぜでしょうか? オブザーバー パターンを実装しなくてよいということでしょうか?

より良い代替案が何かを知っておくと良いでしょう。

ベストアンサー1

それはなぜでしょうか? オブザーバー パターンを実装するべきではないということでしょうか?

まず後半の部分に答えると、

はいObserverつまり、 およびを実装する必要がなくなるということですObervable

なぜ廃止されたのか-

アプリケーションに十分なイベント モデルを提供できませんでした。たとえば、何かが変更されたという概念しかサポートできず、何が変更されたかに関する情報は伝達されませんでした。

アレックスの答え冒頭でうまく述べられているObserver弱点があります: すべてのObservableは同じですに基づくロジックを実装しinstanceof、オブジェクトを具体的な型にキャストして実装update()メソッドに組み込む必要がありますObserver

それに加えて、次のようなバグもありましたシリアル化できませんでしたObservableクラスはインターフェースを実装しておらずSerializable、そのメンバーはすべてプライベートであったため、クラスではありません。

それに代わるより良い方法は何でしょうか?

一方、Listeners多くの型があり、コールバックメソッドがあり、キャストを必要としません。@Raviが指摘したように、答え活用できるPropertyChangeListenerその代わり。

残りの部分については、@Deprecation他の回答にリンクされている他のパッケージを調べるための適切なドキュメントがマークされています。


廃止は、分析でもマークされていることに注意してください。このメール-

最近、これらの問題に遭遇する人は、おそらく、RxJavaまたは他のリアクティブ ストリーム フレームワークを使用しているときに誤って遭遇しているのでしょう。その場合、ユーザーは通常、代わりに jdk9 java.util.concurrent.FlowAPI を使用することになります。すべてのリアクティブ ストリーム フレームワークは、計画されている今後の jdk9 互換バージョン内で互換性/相互運用性を持つはずです。

編集: また、API が廃止されたのは、主に上記の理由だけではなく、何らかの方法で実装が改善されたことを示すために提起されたいくつかのバグ レポート (上記リンク) のコメントに記載されているように、そのようなレガシー コードを維持できないことも挙げられます。

おすすめ記事