Class GenericConstructor<T>

java.lang.Object
org.glassfish.gmbal.util.GenericConstructor<T>

public class GenericConstructor<T> extends Object
Class that allows any class to be instantiated via any accessible constructor. Really a short hand to avoid writing a bunch of reflective code.
  • Field Details

    • lock

      private final Object lock
    • typeName

      private String typeName
    • resultType

      private Class<T> resultType
    • type

      private Class<?> type
    • signature

      private Class<?>[] signature
    • constructor

      private Constructor constructor
  • Constructor Details

    • GenericConstructor

      public GenericConstructor(Class<T> type, String className, Class<?>... signature)
      Create a generic of type T for the untyped class cls. Generally cls is a class that has been generated and loaded, so no compiled code can depend on the class directly. However, the generated class probably implements some interface T, represented here by Class<T>.
      Parameters:
      type - The expected type of a create call.
      className - The name of the class to use for a constructor.
      signature - The signature of the desired constructor.
      Throws:
      IllegalArgumentException - if cls is not a subclass of type.
  • Method Details

    • getConstructor

      private void getConstructor()
    • create

      public T create(Object... args)
      Create an instance of type T using the constructor that matches the given arguments if possible. The constructor is cached, so an instance of GenericClass should always be used for the same types of arguments. If a call fails, a check is made to see if a different constructor could be used.
      Parameters:
      args - The constructor arguments.
      Returns:
      A new instance of the object.