public void testNewInstance() { ConstructorAccess<SomeClass> access = ConstructorAccess.get(SomeClass.class); SomeClass someObject = new SomeClass(); assertEquals(someObject, access.newInstance()); assertEquals(someObject, access.newInstance()); assertEquals(someObject, access.newInstance()); }
public void testPackagePrivateNewInstance() { ConstructorAccess<PackagePrivateClass> access = ConstructorAccess.get(PackagePrivateClass.class); PackagePrivateClass someObject = new PackagePrivateClass(); assertEquals(someObject, access.newInstance()); assertEquals(someObject, access.newInstance()); assertEquals(someObject, access.newInstance()); }
/** * Get the constructor access of this class. * * @param <T> the class type * @param clazz the class * @return the constructor access */ public static final <T> ConstructorAccess<T> getConstructorAccess(Class<T> clazz) { @SuppressWarnings("unchecked") ConstructorAccess<T> ca = (ConstructorAccess<T>) CSTR_ACCESS_MAP.get(clazz); if (ca == null) { ca = ConstructorAccess.get(clazz); CSTR_ACCESS_MAP.putIfAbsent(clazz, ca); } return ca; }
public void testHasPublicConstructor() { try { ConstructorAccess<HasPublicConstructor> access = ConstructorAccess.get(HasPublicConstructor.class); HasPublicConstructor newInstance = access.newInstance(); assertEquals("cow", newInstance.getMoo()); } catch (Throwable t) { System.out.println("Unexpected exception happened: " + t); assertTrue(false); } }
public void testHasPrivateConstructor() { try { ConstructorAccess.get(HasPrivateConstructor.class); assertTrue(false); } catch (RuntimeException re) { System.out.println("Expected exception happened: " + re); } catch (Throwable t) { System.out.println("Unexpected exception happened: " + t); assertTrue(false); } }