作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
<分区>
在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 方法让我对使用泛型感到困惑,我不知道如何让这个方法工作或返回有用的东西。
我是一名优秀的程序员,十分优秀!