FileDocCategorySizeDatePackage
Trap.javaAPI DocExample578Sat Apr 23 22:35:44 BST 2005None

Trap.java

class Mouse { }

class Bear { }

class Trap< T > {
    T trapped;

    public void snare( T trapped ) {
        this.trapped = trapped; 
    }

    public T release() {
        return trapped;
    }
}

class TrapMain {

	static <T> Trap<T> create() {
		return new Trap<T>();
	}

    public static void main( String [] ar ) {
        Trap<Mouse> mouseTrap = new Trap<Mouse>();
        mouseTrap.snare( new Mouse() );
        Mouse mouse = mouseTrap.release();

		// Type inference of factory method
		Trap<Mouse> mouseTrap2 = create();
		Trap<Bear> bearTrap = create();
    }
}