Я в основном пытаюсь выполнить следующий синтаксис (в настоящее время не компилируется). Если кто-то может объяснить, как этого добиться, я был бы признателен. Осложняет дело, я бы метод «добавить» перегружен неоднократноОбъявление подтипов в методе интерфейса
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;
}
И это компилируется, но дает мне проверяемое предупреждение, которое указывает мне, я мог бы делать что-то неправильно. Основываясь на том, что я читаю, я не уверен, что смогу сделать это без каких-либо предупреждений.
Пожалуйста, вы можете изменить 'Foo' к методу, который вы пытаетесь применить это в коде выше. –