'improperly formed type' error

Mark Mahieu mark at twistedbanana.demon.co.uk
Fri Jun 20 02:06:48 PDT 2008

This one's a minor niggle - a non-static generic inner class nested  
in another generic class cannot be instantiated from within a closure  
unless qualified with the enclosing type:

class ImproperlyFormedType<E> {
	class Inner<T> {}

	void makeInner() {
		// this is ok
		new Inner<String>();
		// but not when wrapped in a closure
		{=> new Inner<String>(); }.invoke();
		// qualifying it solves the problem
		{=> new ImproperlyFormedType<E>.Inner<String>(); }.invoke();

ImproperlyFormedType.java:11: improperly formed type, type parameters  
given on a raw type
                 {=> new Inner<String>(); }.invoke();
1 error



More information about the closures-dev mailing list