我找到了一段我希望在我的应用程序中实现的代码。代码工作正常,但有Deprecated
方法。我正在谈论的代码是:
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
PageableHandlerMethodArgumentResolver resolver = new PageableHandlerMethodArgumentResolver();
resolver.setFallbackPageable(new PageRequest(0, 20));
argumentResolvers.add(resolver);
super.addArgumentResolvers(argumentResolvers);
}
}
具体来说,Deprecated
类是WebMvcConfigurerAdapter
及其方法addArgumentResolvers
。根据文件:
从5.0开始,WebMvcConfigurer具有默认方法(由Java 8基线实现),并且可以直接实现而无需此适配器
因此,我已使用interface
- WebMvcConfigurer
替换了已弃用的课程。问题是界面不允许我使用addArgumentResolvers
方法。现在我该怎么做?我应该创建interface
的实例吗?使用已弃用的方法有什么缺点吗?
答案 0 :(得分:3)
使用弃用方法的缺点是,当您迁移到较新版本的库时,该方法可能会完全消失,您将不得不重写代码。另一件事是,图书馆开发人员通常有理由弃用方法 - 要么是无效的,要么导致设计不好,或者(最常见的)有类似的。
根据Docs的WebMvcConfigurer具有默认方法addArgumentResolvers(java.util.List<HandlerMethodArgumentResolver> resolvers)
。如果您无法使用它,请检查您的项目是否支持 Java 8 。
示例如何运作:
DefaultMethods.java
public interface DefaultMethods { default void example(){
System.out.println("default method call"); } }
DefalutMethodsTest.java
public class DefalutMethodsTest implements DefaultMethods{
public static void main(String[] args) {
new DefalutMethodsTest().example();
}
@Override
public void example() {
System.out.println("implementer call");
DefaultMethods.super.example();
}
}
输出:
implementer call
default method call