gpt4 book ai didi

java - 在接口(interface)方法中声明子类型捕获

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

我基本上试图实现以下语法(目前无法编译)。如果有人可以解释如何实现这一目标,我将不胜感激。使问题变得复杂的是我重复重载了“add”方法

public interface Organization {
Organization add(Hub hub);
}

public class JpaOrganization implements Organization {


@OneToMany(mappedBy = "organization", cascade = CascadeType.ALL)
private Set<JpaHub> hubs = new LinkedHashSet<>();


@Override
public JpaOrganization add(JpaHub hub) {
hub.setOrganization(this);
hubs.add(hub);
return this;
}
}

public interface Hub {
void setOrganization(Organization organization);
}


public class JpaHub implements Hub {
@Override
public void setOrganization(JpaOrganization organization) {
this.organization = organization;
}
}

我试图这样做来抽象 DAO 层以进行预期的迁移。因此,所有“JPA”实现都可以假设它们正在处理 JPA 实现,这对于所有反射的工作至关重要。

我需要捕获类型,但这种特定排列的语法却让我无法理解。

我尝试过类似的方法:

<O extends Organization, H extends Hub> O foo(H hub);

实现:

   @Override
public JpaOrganization add(Hub hub) {
return this;
}

这可以编译,但会给我一个检查警告,表明我可能做错了什么。根据我正在阅读的内容,我不确定是否可以在没有警告的情况下执行此操作。

最佳答案

在类级别定义类型变量:

public interface Organization<O extends Organization, H extends Hub> {
O add(H hub);
}

关于java - 在接口(interface)方法中声明子类型捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36901045/

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