gpt4 book ai didi

java - 使用泛型,我如何定义一个允许传入任何对象并且不发出警告的类?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:34:09 24 4
gpt4 key购买 nike

我有一个这样定义的接口(interface):

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 

它给了我一个关于方法调用的警告:

Unchecked assignment: ...NoAdditionalProcessing to ...AdditionalProcessing

那些 ... 是我排除的包名称。有没有办法摆脱这个警告?我基本上想定义 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>

然后,将您的方法签名更改为具有 super 通配符,以便您可以为任何目标类传入 NoAdditionalProcessing:

public <I, O> O map(I source, Class<O> destinationClass, 
AdditionalProcessing<? super I, ? super O> additionalProcessing)

关于java - 使用泛型,我如何定义一个允许传入任何对象并且不发出警告的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17153373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com