ジェネリックの専門家ではなく、コードの繰り返しを避けるためにいくつかのクラスのリエンジニアリングをしようとしているので、可能な限り最良の方法でジェネリックを使用するようにしています。メソッドはジェネリックの引数には適用されません
私はマークされた行の次のエラーが取得しています:、私はこれがあなたたちが必要とするすべての情報だと思う
public abstract class KeyProfileService {
protected CrudRepository<? extends KeyProfileEntity, Long> myRepository;
public List<KeyProfileEntity> getList() {
List<KeyProfileEntity> result = new ArrayList<>();
this.myRepository.findAll().forEach(result::add);
return result;
}
public KeyProfileEntity create(KeyProfileEntity entity) {
return this.myRepository.save(entity); //error
}
public boolean delete(long id) {
if (this.myRepository.exists(id)) {
this.myRepository.delete(this.myRepository.findOne(id));//error
return true;
}
return false;
}
public void update(KeyProfileEntity entity) {
this.myRepository.save(entity); //error
}
public KeyProfileEntity getEmployee(long id) throws NotFoundEntryException {
if (this.myRepository.exists(id))
return this.myRepository.findOne(id);
throw new NotFoundEntryException();
}
}
そうになるコメントやI:ここでは私のクラスを
The method delete(Long) in the type CrudRepository is not applicable for the arguments (capture#5-of ? extends KeyProfileEntity)
をもっと添付してください。
ありがとうございます!
問題がCrudRepository –
こんにちはモーリスに位置します。もっと情報をくれませんか?その宣言の意味ですか?私はちょうど を保護しました。CrudRepository myRepositoryを保護しました。ただし、別のメソッドから割り当て可能にするには、 "?extends"を指定する必要があります。ご協力いただきありがとうございます! –
Carloshf
これは問題ではありません:deleteメソッドがlongを期待しているという問題が発生しました –