如何替换已弃用的 class 方法?
How to replace deprecated class method?
我找到了一段我想在我的应用程序中实现的代码。该代码工作正常,但有 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
class 是 WebMvcConfigurerAdapter
并且它是方法 addArgumentResolvers
。根据文档:
as of 5.0 WebMvcConfigurer has default methods (made possible by a Java 8 baseline) and can be implemented directly without the need for this adapter
所以我用 interface
- WebMvcConfigurer
替换了弃用的 class。问题是界面不允许我使用 addArgumentResolvers
方法。现在我该怎么做?我应该创建 interface
的实例吗?使用已弃用的方法有什么缺点吗?
使用已弃用方法的缺点是,当您迁移到更新版本的库时,该方法可能会完全消失,您将不得不重写代码。另一件事是,库开发人员通常有理由弃用方法 - 它们要么无效,要么导致糟糕的设计,或者(最常见的)有类似物。
根据 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
我找到了一段我想在我的应用程序中实现的代码。该代码工作正常,但有 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
class 是 WebMvcConfigurerAdapter
并且它是方法 addArgumentResolvers
。根据文档:
as of 5.0 WebMvcConfigurer has default methods (made possible by a Java 8 baseline) and can be implemented directly without the need for this adapter
所以我用 interface
- WebMvcConfigurer
替换了弃用的 class。问题是界面不允许我使用 addArgumentResolvers
方法。现在我该怎么做?我应该创建 interface
的实例吗?使用已弃用的方法有什么缺点吗?
使用已弃用方法的缺点是,当您迁移到更新版本的库时,该方法可能会完全消失,您将不得不重写代码。另一件事是,库开发人员通常有理由弃用方法 - 它们要么无效,要么导致糟糕的设计,或者(最常见的)有类似物。
根据 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