ジェネリックス

generics.png

C++でいうところのtemplateと同じ。厳密には同じじゃない

サンプルソースコード

public class CircularArray<T>{
   private T[] items;
   pivate int head = 0;
   public CircularArray(int size){
         items = (T[]) new Object[size];
  }
  private int convert(int index){
       if(index < 0){
             index += items.length;
        }
        return (head + index) % items.length;
    }
    public void rotate(int shiftRight){
         head = convert(shiftRight);
    }
    public T get(int i){
         if( i<0 || i>= items.length){
                 throw new java.lang.IndexOutOfBoundsException("...");
         }
         return items[convert(i)];
    }
   public void set(int i, T item){
    items[convert(i)] = item;
 }
}

遭遇したエラー

Syntax error on token "int", Dimensions expected after this token

Javaのジェネリクスでは、型パラメータにプリミティブ型を指定できない。そこで、指定したいプリミティブ型のラッパークラスを指定することにより、指定したプリミティブ型を対応するラッパークラスに自動でボクシングしてくれる。
ええーーー


template

サポートサイト Wikidot.com template