Generics Generic sınıf içerisinde her türlü tipi (primitive veya

advertisement
Generics
Generic sınıf içerisinde her türlü tipi (primitive veya referans) tutabilen , hangi tipi
tutacağına sınıftan bir nesne yaratılırken karar verebileceğimiz, nesne yaratılırken
belirlediğimiz tip ne olursa olsun bütün tipler için aynı işlemleri yapabilmemizi sağlayan
sınıftır.
Örneğin bir sınıf tanımlıyoruz ve içerisinde bir başka bir sınıf barındırması(composition)
gerekiyor .Fakat içerisinde barındıracağı sınıfın ne olacağına bu sınıfı yazarken değil bu
sınıfı kullanırken karar vermek istiyoruz. O zaman sınıfımızı aşağıdaki gibi generic
tanımlamamız gerekir.
public class BizimGenericClass <E>
{
private E genericDeger;
public BizimGenericClass(E genericDeger)
{
this.genericDeger = genericDeger;
}
public void genericTipiYaz()
{
System.out.println(genericDeger.getClass().toS
tring());
}
public void genericDegeriYaz()
{
System.out.println(genericDeger.toString());
}
}
public Vector<E> yaz(E ...arg){
Vector<E> v=new Vector<E>();
for (E e : arg) {
v.add(e); }
return v;
}
Sınırsız sayıda parameter alabilme
public class VarArg {
public int topla(int ...is ){
int toplam=0;
for (int i = 0; i < is.length; i++) {
toplam+=is[i];
}
return toplam;
}
}
VarArg v=new VarArg();
System.out.println(v.topla(2,4,5,2,6,5));
import java.util.Iterator;
import java.util.Vector;
public class GaripSinif {
int fonk(int...a){
int toplam=0;
for (int i = 0; i < a.length; i++) {
toplam+=a[i];
}
return toplam;
}
<S> int fonk2(Vector <S> v){
int toplam=0;
for (S s : v) {
if (s instanceof Integer) {
toplam+=(Integer)s;
}
}
return toplam;
}
}
import java.util.Vector;
public class GenericTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Vector<String> vstr = new Vector<String>();
Vector<Integer> vint = new Vector<Integer>();//
Generic
vint.add(3);
vint.add(new Integer(10));
GaripSinif g = new GaripSinif();
System.out.println(g.fonk2(vint));
System.out.println(g.fonk2(vstr));
for (Integer integer : vint) {
System.out.println(integer);
}
}
}
public class CokParametreTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
GaripSinif s = new GaripSinif();
int toplam=s.fonk(1,2,3,14,5,6,45);
System.out.println(toplam);
}
}
Lists.java
import java.util.*;
public class Lists {
public static <T> List<T> toList(T... arr) {
List<T> list = new ArrayList<T>();
for (T t : arr) list.add(t);
return list;
}
}
import java.util.List;
public class Generics {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Integer> ints = Lists.toList(1, 2, 3);
List<String> words = Lists.toList("hello",
"world");
List<?> something = Lists.toList("one", 2, 3.0);
//List<Object> something1 = Lists.toList("one",
2, 3.0);
}
}
Download