gpt4 book ai didi

Java 泛型 : compatible service subclass

转载 作者:太空宇宙 更新时间:2023-11-04 08:16:31 25 4
gpt4 key购买 nike

我需要一个返回兼容服务的服务查找方法。这些特定服务是同一通用父类(super class)的(非通用)子类,我想使用泛型来确保兼容性。

类(class):

  • class BaseDTO
  • class AaaDTO extends BaseDTO
  • class BbbDTO extends BaseDTO
  • interface BaseService<T extends BaseDTO>
  • interface AaaService extends BaseService<AaaDTO>
  • interface BbbService extends BaseService<BbbDTO>

我必须将哪些泛型定义放入下面解析器类的占位符中?我想表达的是resolve()返回与给定对象兼容的服务实现。

public class Resolver {
@Autowired private AaaService aaaService;
@Autowired private BbbService bbbService;

public <T ???> BaseService<???> resolve(T object) {
if (object instanceof AaaDTO) {
return (???) aaaService;
} else if (object instanceof BbbDTO) {
return (???) bbbService;
} else {
throw new IllegalArgumentException();
}
}
}

只是说我想告诉编译器以下内容是安全的:

BaseDTO dto = getDtoFromSomewhereElse();
resolver.resolve(dto).foo(dto);

最佳答案

如果您的方法 foo 在 BaseService 中定义如下:

public void foo(BaseDTO dto);

您可以执行以下操作:

 public <T extends BaseDTO> BaseService<T> resolve(T object) {
if (object instanceof AaaDTO) {
return (BaseService<T>) aaaService;
} else if (object instanceof BbbDTO) {
return (BaseService<T>) bbbService;
} else {
throw new IllegalArgumentException();
}
}

关于Java 泛型 : compatible service subclass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10313128/

25 4 0
文章推荐: javascript - Highcharts 仪表 : Adding Icons
文章推荐: c - 如何将 3D 数组从 C 返回到 Java?
文章推荐: jquery - 显示
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com