使用JAX-RS时,为什么REST资源方法不能有最终修饰符?

时间:2012-01-19 15:13:39

标签: rest methods cxf jax-rs final

我们正在使用CXF 2.4.2创建RESTful接口。我有一个bean资源类,定义如下:

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

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

有谁知道为什么该方法不能是最终的才能访问资源?

1 个答案:

答案 0 :(得分:0)

有时JAX-RS以这样的方式实现,而不是原始类(我们创建)JAX-RS使用继承自我们类的代理类。由于无法覆盖最终方法,因此禁止使用最终方法。

使用代理可以向JAX-RS框架添加各种拦截器,提供程序等。显然,可以在不使用代理的情况下获得相同的功能,因此其他提供程序可能允许使用最终方法。

规范没有说明最终方法。

旁注:经常使用final方法是一个坏主意。有时即使我们认为不应该覆盖给定的方法,也可能看起来是必要的。甚至Java创建者都犯了一些这样的错误。显然有些类,哪些方法不应该被覆盖(String),但是它们不是很多。