ジェネリック医薬品は、2つのクラスのみと値1つのクラスを許可する必要があり、キーマップ

D-男:

モデルとして、私はキー(AまたはB)のマップを受け入れるように私のメソッドのパラメータ化をしたいジェネリック医薬品と値を使用すると、後でそれがマップに変換され Map<UUID, Model>

問題は、私は上のエラーを取得することであるentry.getKey().getId()B / C。私が何であるかを定義していませんか?かぎ。誰かの助けができますか?

public void method(Map<?, Model> map) {
  Map<UUID, Model> transformation =
      map.entrySet().stream()
          .collect(
              Collectors.toMap(entry -> entry.getKey().getId(), entry -> entry.getValue()));
}

class S {
  protected UUID getId() {
    // return UUID
  }
}

class A extends S {}

class B extends S {}

class Model {
  // bla bla
}
アンディ・ターナー:

場合AB提供し、共通のインタフェースを実装するgetId()方法を、それとワイルドカードをバインド:

public void method(Map<? extends S, Model> map) {

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=215231&siteId=1