我们正在使用CXF 2.4.2创建RESTful接口。我有一个bean资源类,定义如下:
@Path("/mypath")
public class MyResource {
@GET
@Path("/myget")
public final Response myGet() { ... }
有谁知道为什么该方法不能是最终的才能访问资源?
答案 0 :(得分:0)
有时JAX-RS以这样的方式实现,而不是原始类(我们创建)JAX-RS使用继承自我们类的代理类。由于无法覆盖最终方法,因此禁止使用最终方法。
使用代理可以向JAX-RS框架添加各种拦截器,提供程序等。显然,可以在不使用代理的情况下获得相同的功能,因此其他提供程序可能允许使用最终方法。
规范没有说明最终方法。
旁注:经常使用final方法是一个坏主意。有时即使我们认为不应该覆盖给定的方法,也可能看起来是必要的。甚至Java创建者都犯了一些这样的错误。显然有些类,哪些方法不应该被覆盖(String),但是它们不是很多。