基本的に次の構文を達成しようとしています(現在はコンパイルしていません)。誰かがこれを達成する方法を説明できるなら、私はそれを感謝します。事態を複雑にし、私は私が予想される移行のための抽象DAO層離れにこれを行うにしようとしています繰り返しインターフェイスメソッドでサブタイプのキャプチャを宣言する
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;
}
}
オーバーロードされた「追加」メソッドを持っています。したがって、すべてのJPA実装ではJPA実装を処理しているとみなすことができます。これはすべてのリフレクションが機能するために不可欠です。
私はタイプをキャプチャする必要がありますが、この特定のアレンジの構文は私にはわかりません。
<O extends Organization, H extends Hub> O foo(H hub);
実装:
私のような何か試してみました
@Override
public JpaOrganization add(Hub hub) {
return this;
}
をそして、これはコンパイルが、私が何か間違ったことかもしれない私に示して確認警告を与えます。私が何を読んでいるかに基づいて、私はいくつかの警告なしでこれを行うことができるとは確信していません。
をあなたは上記のコードでにこれを適用しようとしている方法に 'foo'を変更することができますしてください。 –