static new HashMap nuEmptyObject_cache; static A nuEmptyObject(Class c) ctex { Constructor ctr; synchronized(nuEmptyObject_cache) { ctr = nuEmptyObject_cache.get(c); if (ctr == null) { nuEmptyObject_cache.put(c, ctr = nuEmptyObject_findConstructor(c)); ctr.setAccessible(true); } } try { ret (A) ctr.newInstance(); } catch (InstantiationException e) { if (empty(e.getMessage()) fail("Can't instantiate " + className(c), e); } } static Constructor nuEmptyObject_findConstructor(Class c) { for (Constructor m : c.getDeclaredConstructors()) if (m.getParameterTypes().length == 0) ret m; fail("No default constructor declared in " + c.getName()); }