2

このジェネリッククラスがあるとしましょう:

class Item<T> {
  private T item;
  public void set(T item) {
    this.item = item;
  }
  public T get() {
    return item;
  } 
}

次のように 2 つのインスタンスを作成すると:

Item<Integer> intItem = new Item<Integer>();
Item<String> stringItem = new Item<String>();

2 つのインスタンスは、次の同じ raw クラスを共有します。

  class Item {
    private Object item;
    public void set(Object item) {
      this.item = item;
    }
    public Object get() {
      return item;
    } 
  }

さて、クラス Item を次のように拡張すると:

class IntItem extends Item<Integer>{
  private Integer item;
  public void set(Integer item) {
    this.item = item;
  }
  public Integer get() {
   return item;
  } 
}

これらのブリッジ メソッドが作成されます。

  class IntItem extends Item<Integer>{
      private Integer item;
      //Bridge method 1
      public void set(Object item) {
        this.item = (Integer) item;
      }
      public void set(Integer item) {
        this.item = item;
      }
      //Bridge method 2
      public Object get() {
       return item;
      }
      public Integer get() {
       return item;
      } 
    }

私はここまで正しかったのだろうか?私の質問は、ブリッジメソッドが必要な理由と時期は? この Item クラスを使用していくつかの例を作成できますか?

私はすでに他の回答を読んでいますが、具体的な例がなければ完全には理解できません。

4

1 に答える 1