gpt4 book ai didi

java - 了解泛型方法返回类型

转载 作者:行者123 更新时间:2023-11-29 04:19:28 25 4
gpt4 key购买 nike

<分区>

public interface Path<X> extends Expression<X>有一种方法是:

<Y> Path<Y> get(String attributeName);

我不明白这个通用方法是如何工作的。参数列表中没有定义泛型,如何确定返回类型?

我的实验是这样的:

class abc<Y> implements myinterfa<Y> {
Y ab;

public <Y> Y get(String attributeName) {
return ab;
}
}

它在编译时不起作用。

错误信息是:

Incompatible types.
Required:
Y
Found:
Y

附言------------

  @Override
public List<WebSite> list(WebSite webSite, Integer page, Integer pageSize) {
Pageable pageable = new PageRequest(page, pageSize, Sort.Direction.ASC, "id");
Page<WebSite> pageWebSite = webSiteRepository.findAll(new Specification<WebSite>() {

@Override
public Predicate toPredicate(Root<WebSite> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
Predicate predicate = cb.conjunction();
if (webSite != null) {
if (StringUtil.isNotEmpty(webSite.getName())) {
predicate.getExpressions().add(cb.like(root.get("name"), "%" + webSite.getName().trim() + "%"));
}
if (StringUtil.isNotEmpty(webSite.getUrl())) {
predicate.getExpressions().add(cb.like(root.get("url"), "%" + webSite.getUrl().trim() + "%"));
}
}
return predicate;
}
}, pageable);
return pageWebSite.getContent();
}

此方法在我的 BLL 中,我的存储库是:

public interface WebSiteRepository extends JpaRepository<WebSite, Integer>, JpaSpecificationExecutor<WebSite> {

}

然后我跟随调用链到 Path 接口(interface):

public interface Path<X> extends Expression<X> {
<Y> Path<Y> get(String attributeName);
}

已经调用了泛型方法,但我不知道这个方法是如何工作的。

PS2------------

让我来澄清一下这个问题:

接口(interface)Path的get方法如何确认Y标识?接口(interface)和方法没有使用相同的标识符。我不能使用 Path<String> path = new subClass<String>()确认参数类型。并且在参数签名中没有像这样定义通用参数类型:

<Y> Path<Y> get(Y attributeName);

在这种格式中,我可以调用方法:

String result = path.get("vincent");

因为当我将“vincent”传递给这个方法时,标识符 Y 被确认。

get 方法让我对使用泛型感到困惑,我不知道如何让这个方法工作或返回有用的东西。

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