2012-01-19 2 views
0

CXF 2.4.2を使用してRESTfulインターフェイスを作成しています。私は次のように定義された豆のリソースクラスを持っている:メソッドがリソースにアクセスするためには、最終的にはできませんなぜJAX-RSを使用している場合、RESTリソースメソッドに最終修飾子を付けることができないのはなぜですか?

@Path("/mypath") 
public class MyResource { 

    @GET 
    @Path("/myget") 
    public final Response myGet() { ... } 

誰でも知っていますか?

+0

私はJerseyアノテーション付きのメソッドに最終的な修飾子を追加しました。以前と同じように動作します。おそらくCXFに関する何か? –

答えて

0

時々、JAX-RSはオリジナルのクラス(私たちが作成する)ではなく、JAX-RSが私たちのクラスを継承するプロキシクラスを使用するような方法で実装されます。最終的なメソッドはオーバーライドできないので、最終的なメソッドの使用は禁止されています。

プロキシを使用すると、JAX-RSフレームワークにさまざまなインターセプタ、プロバイダなどを追加できます。プロキシを使用せずに同じ機能を得ることができるので、他のプロバイダが最終的なメソッドを使用できる可能性があります。

この仕様では、最終的な方法については何も言及していません。

サイドノート:非常に多くの場合、最終的な方法の使用は悪い考えです。時には、与えられたメソッドがオーバーライドされるべきではないと思っても、必要であるように見えるかもしれません。 Java制作者でさえ、このような間違いがいくつかありました。明らかに、クラスはオーバーライドされてはいけません(String)が、クラスはたくさんありません。

関連する問題