java – 使用泛型,我如何定义一个允许传入任何对象并且不提供警
发布时间:2020-12-15 05:00:59 所属栏目:Java 来源:网络整理
导读:我有一个这样定义的接口: public interface AdditionalProcessingPre,Post { public void postProcess(Pre pre,Post post);} 而且我已经决定要创建一个扩展它的NoAdditionalProcessing类.这是一个无操作,它不会为它的实现做任何事情.这是我编译的实现: pub
我有一个这样定义的接口:
public interface AdditionalProcessing<Pre,Post> { public void postProcess(Pre pre,Post post); } 而且我已经决定要创建一个扩展它的NoAdditionalProcessing类.这是一个无操作,它不会为它的实现做任何事情.这是我编译的实现: public class NoAdditionalProcessing implements AdditionalProcessing { @Override public void postProcess(Object o,Object o2) { } } 问题是,当我将其传递给这样的方法签名时: public <I,O> O map(I source,Class<O> destinationClass,AdditionalProcessing<I,O> additionalProcessing) throws MappingException 它给我一个警告方法调用说:
那些……是我排除的包装名称.有没有办法摆脱这个警告?我基本上想要定义NoAdditionalProcessing,所以它说,“我会接受任何东西,它是无关紧要的,这没关系”. 我试过这个: public class NoAdditionalProcessing implements AdditionalProcessing<Object,Object> 但这给了我一个错误,因为它要求我传入Object.我试过了 public class NoAdditionalProcessing implements AdditionalProcessing<? extends Object,? extends Object> 但那不编译. 解决方法
更改类声明以为类型参数赋值:
public class NoAdditionalProcessing implements AdditionalProcessing<Object,Object> 然后,将方法签名更改为具有超级通配符,以便可以为任何目标类传递NoAdditionalProcessing: public <I,AdditionalProcessing<? super I,? super O> additionalProcessing) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 为什么Java Thread.sleep或Date.after()在其他计算机上的功
- java.lang.IllegalArgumentException:未定义的过滤器参数[
- 泛型 – RxKotlin:尝试添加自定义错误捕获
- [项目源码] JavaWeb校园宿舍管理系统
- java – Spring Data JPA – JpaRepository中的自定义排序
- java – Android:Snackbar给出了ArrayIndexOutOfBoundsExc
- java – 绘制一个在下一个绘画中不会消失的矩形
- 快速了解Spring Boot
- 当定时器中安排了Java TimerTask时,是否已经执行了?
- 多线程 – parBuffer评估未给出预期的加速