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); } }