Giriş
Generic constructor şu şekillerde kullanılabilir.
1. Sınıfın kendisi generic'tir. Constructor yine aynı tipten parametre alır
2. Sınıf generic değildir. Constructor T tipten parametre alır
3. Sınıfın kendisi generictir. Conctructor T2 tipinden farklı bir parametre alır.
Örnek - Kendisi Generic Olan Sınıfa Constructor
Şöyle yaparız. Burada <T> sınıf tanımlanırken belirtiliyor.
Şöyle yaparız
Örnek - Kendisi Generic Olmayan Sınıfa Generic Constructor
Elimizde şöyle bir kod olsun. Burada <T> constructor'dan önce belirtiliyor.
Şöyle yaparız. Burada <T> sınıf tanımlanırken belirtiliyor. <V> ise constructor'dan önce belirtiliyor.
Generic constructor şu şekillerde kullanılabilir.
1. Sınıfın kendisi generic'tir. Constructor yine aynı tipten parametre alır
2. Sınıf generic değildir. Constructor T tipten parametre alır
3. Sınıfın kendisi generictir. Conctructor T2 tipinden farklı bir parametre alır.
Örnek - Kendisi Generic Olan Sınıfa Constructor
Şöyle yaparız. Burada <T> sınıf tanımlanırken belirtiliyor.
public class Container<T> {
private T defaultValue;
public Container(T defaultValue){
this.defaultValue = defaultValue;
}
}
Örnek - Kendisi Generic Olan Sınıfa Static Builder MetodŞöyle yaparız
public Foo <T extends Bar> {
T bar;
public static <T extends Bar> Foo<T> builder (T bar) {
new Foo(bar)
}
private Foo (T bar) {
this.bar = bar;
}
}
Örnek - Kendisi Generic Olmayan Sınıfa Generic Constructor
Elimizde şöyle bir kod olsun. Burada <T> constructor'dan önce belirtiliyor.
public class TypeWithGenericConstructor {
public <T> TypeWithGenericConstructor(T arg) {
// TODO Auto-generated constructor stub
}
}
Şöyle kullanabiliriz.new TypeWithGenericConstructor(LocalDate.now(ZoneId.systemDefault()));
Eğer derleyiciye inference yapamazsa yardımcı olmak gerekir. new anahtar kelimesinden sonra type yazılır. Şöyle yaparıznew <LocalDate>TypeWithGenericConstructor(null);
Yardımcı olma işlemi Java'daki diğer sınıflar içinde yapılabilir. Şu kod da benzer işi yapar. Yine new anahtar kelimesinden sonra type yazılır.List<Integer> list = new <String, Long>ArrayList<Integer>();
Örnek - Kendisi Generic Olan Sınıfa T2 Tipinden ConstructorŞöyle yaparız. Burada <T> sınıf tanımlanırken belirtiliyor. <V> ise constructor'dan önce belirtiliyor.
public class Container<T> {
public <V> Container(V value){
...
}
}
Hiç yorum yok:
Yorum Gönder