gpt4 book ai didi

Java从泛型方法调用非泛型方法

转载 作者:行者123 更新时间:2023-11-30 05:56:06 25 4
gpt4 key购买 nike

我正在尝试重构一些东西。我有以下类层次结构:

class BaseItem {..}
class ItemA extends BaseItem {..}
class ItemB extends BaseItem {..}
class BaseContext<T extends BaseItem> {..}
class ContextA extends BaseContext<ItemA> {..}
class ContextB extends BaseContext<ItemB> {..}

以及消费者需要使用的 2 个方法:

public void methodA(ItemA) {..}
public void methodB(ItemB) {..}

是否有可能为这两种方法提供一个通用的消费者?现在,我有 2 个非通用的:

Consumer<ContextA> consumerA = ctx -> methodA(ctx.getItem());
Consumer<ContextB> consumerB = ctx -> methodB(ctx.getItem());

我想说,由于类型删除,这是不可能的,我只是想确定一下

最佳答案

在我看来,您可以使用通用方法将您的 Item 消费者转换为 Context 消费者。它可能看起来像这样。目前尚不清楚这是否满足您的要求,因为我不确定您打算如何使用上下文使用者。

public <T extends BaseItem, U extends BaseContext<T>> Consumer<U> wrap(Consumer<T> innerConsumer) {
return context->innerConsumer.accept(context.getItem());
}

然后你就会有

Consumer<ContextA> consumerA = wrap(this::methodA);
Consumer<ContextB> consumerB = wrap(this::methodB);

关于Java从泛型方法调用非泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53144282/

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