我基本上试图实现以下语法(目前,没有编译)。如果有人能解释如何实现这一点,我将不胜感激。让事情变得复杂的是我要添加'方法重复重载
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层以进行预期的迁移。所以,所有&#34; JPA&#34;实现可以假设它们正在处理JPA实现,这对于所有反射都是必不可少的。
我需要捕获类型,但这种特殊安排的语法规避了我。
我尝试过类似的事情:
<O extends Organization, H extends Hub> O foo(H hub);
实现:
@Override
public JpaOrganization add(Hub hub) {
return this;
}
这个编译,但给了我一个检查警告,告诉我,我可能做错了什么。根据我正在阅读的内容,我不确定如果没有一些警告我就能做到这一点。
答案 0 :(得分:1)
在班级定义类型变量:
public interface Organization<O extends Organization, H extends Hub> {
O add(H hub);
}