자바 제너릭의 핵심은 우리가 사용하길 원하는 타입을 알려주면 자세한 것은 자바가 신경 써서 해 준다는 것이다.

public class Holder<T> {
    private T t;
    
    public Holder(T t) {
        this.t = t;
    }
    
    public void set(T t) {
        this.t = t;
    }
    
    public T get() {
        return t;
    }
    
    public static void main(String[] args) {
        Holder<Blog> holder = new Holder<Blog>(new Blog());
        Blog myBlog = holder.get();
        System.out.println("Object : " + myBlog);
    }
}
결과
Object : generic.Blog@c17164

제너릭을 이용하여 Tuple를 만들어 봤다. 2개이상의 리턴이 필요한 경우 유용하게 사용할 수 있다.
public class Tuple {
    public static <A, B> TwoTuple<A, B> get(A a, B b) {
        return new TwoTuple<A, B>(a, b);
    }
    
    public static <A, B, C> ThreeTuple<A, B, C> get(A a, B b, C c) {
        return new ThreeTuple<A, B, C>(a, b, c);
    }
    
    public static void main(String[] args) {
        TwoTuple<String, Integer> result1 = Tuple.get("String", 5);
        System.out.println("두개의 객체를 리턴 : " + result1.toString());
        
        ThreeTuple<Blog, Post, Tag> result2 = 
Tuple.get(new Blog(), new Post(), new Tag());
        System.out.println("세개의 객체를 리턴 : " + result2.toString());
    }
}

결과
두개의 객체를 리턴 : (Hi!!, 2)
세개의 객체를 리턴 : (generic.Blog@ca0b6, generic.Post@10b30a7, generic.Tag@1a758cb)

제너릭을 이용한 랜덤으로 요소 하나를 가져오는 클래스 구현
import java.util.ArrayList;
import java.util.Random;

public class RandomList<T> {
    private ArrayList<T> storage = new ArrayList<T>();
    private Random random = new Random(50);
    
    public void add(T item) {
        storage.add(item);
    }
    
    public T select() {
        return storage.get(random.nextInt(storage.size()));
    }
    
    public static void main(String[] args) {
        RandomList<String> rs = new RandomList<String>();
        
        for(String each : ("The quick brown fox jumped "+ 
"over the lazy brown dog").split(" ")) {
            rs.add(each);
        }
        for(int i=0; i<11; i++) {
            System.out.print(rs.select() + " ");
        }
    }
}
결과
lazy brown fox brown quick quick the brown the brown The