-- Java SE

Wildcards

Javada “Object” sınıfı otomatik olarak tüm oluşturulan sınıfların üst sınıfıdır.(base class).Bu özellikten faydalanarak object sınıfı nesnesine diğer tüm nesneler atanabilir.Örneğin;

public class House {
    public static void main(String args[]){
        House myhouse = new House();
        Object myobject = new Object();
        myobject = myhouse;
    }
}

Bu tarz işlemler generic kullanarak aşağıdaki gibi yapılabilir.

public class Box<Number>{
    ArrayList<Number> list = new ArrayList<>();

    public static void main(String args[]){
        Box box1 = new Box();
        box1.list.add(new Integer(29));   // Integer,Number'in alt sınıfıdır.
        box1.list.add(new Double(10.5));  // Double,Number'in alt sınıfıdır.

    }
}

Peki,aşağıdaki gibi bir metod olsa;

public void testBox(Box<Number> box){
      //  Kodlar...
    }

ve bu metoda Box<Integer> veya Box<Double> türünden bir nesne geçirilmeye çalışılsa,derleyici hata verecektir.Sebepi,Integer,Number’in alt sınıfıdır diye, Box<Integer>,Box<Number>’ın alt sınıfı olacak diye bir kaide yoktur ki değildir.Bu tür işlemler <?> işaretlemesi kullanarak yapılır.

Yorum bırak

Yorum