Class ObjectUtil

java.lang.Object
org.nuiton.util.ObjectUtil

public class ObjectUtil extends Object
Outils pour manipuler des objets. Création d'un objet à partir d'une chaîne le décrivant, conversion d'un objet en Object, récupération de méthodes à partir de leur nom, de constructeurs à partir de leurs paramètres... Created: 4 novembre 2004
Author:
Benjamin Poussin - poussin@codelutin.com
  • Field Details

    • CLASS_METHOD_SEPARATOR

      public static final String CLASS_METHOD_SEPARATOR
      Used to know what is separator between class and method
      See Also:
    • ZERO

      protected static final Integer ZERO
    • ZEROC

      protected static final Character ZEROC
    • ZEROF

      protected static final Float ZEROF
    • ZEROL

      protected static final Long ZEROL
    • ZEROD

      protected static final Double ZEROD
    • ZEROB

      protected static final Byte ZEROB
  • Method Details

    • newInstance

      public static <E> E newInstance(Class<E> clazz, Collection<?> args, boolean nullIfMissing)
      Invoke constructor on clazz to create new instance. Try to find argument for constructor in args parameter.
      Type Parameters:
      E - FIXME
      Parameters:
      clazz - class of object to instanciate
      args - all possible parameter that constructor can used
      nullIfMissing - if no suitable class or object found in args, use null value (no exception)
      Returns:
      new instance
      Throws:
      IllegalArgumentException - if something is wrong during instanciation
    • choiceArgument

      protected static Object choiceArgument(Class<?> clazz, List args, boolean nullIfMissing)
      Permet de matcher un type d'argument attendu clazz parmi un ensemble possible de candidat. Les candidats peuvent etre des classes qu'il faudra instancier pour satisfaire le type demande.
      Parameters:
      clazz - le type recherché
      args - la liste des arguments ou des types
      nullIfMissing - pour retourner nulle si l'argument n'est pas trouvé
      Returns:
      le type d'argument trouvé
    • create

      Create new object from string like org.nuiton.Toto(name=machine, int=10) where machine and int is properties on org.nuiton.Toto object. Conversion between 10 in string and 10 as integer as automaticaly done For String property you can use ex:
      • name="my string with , in string"
      • name='my string with , in string'
      Parameters:
      classnameAndProperties - FIXME
      Returns:
      the instanciated object FIXME
      Throws:
      ClassNotFoundException - FIXME
      IllegalAccessException - FIXME
      InstantiationException - FIXME
      NoSuchMethodException - FIXME
      InvocationTargetException - FIXME
    • convert

      protected static Object convert(String v, Class<?> clazz)
    • clone

      public static <E extends Cloneable> E clone(E e) throws CloneNotSupportedException
      Clone object by introspection because Cloneable interface don't permit to call clone :(. This methode replace next code that don't work :(
      if (o instanceof Cloneable) {
        Object n = ((Cloneable)o).clone();
      }
      
      Type Parameters:
      E - FIXME
      Parameters:
      e - object to clone
      Returns:
      new instance of E
      Throws:
      CloneNotSupportedException - if some error occur during clone
    • deepClone

      public static <E> E deepClone(E e) throws CloneNotSupportedException
      Use serialization/deserialization to do deep clone of object
      Type Parameters:
      E - FIXME
      Parameters:
      e - object to clone
      Returns:
      new instance of E
      Throws:
      CloneNotSupportedException - if some error occur during clone
    • call

      Call method m with params as String. Each param is converted to required type for method with beanutils converter
      Parameters:
      o - object where method must be call
      m - method to call
      params - parameters for method call
      Returns:
      returned method's value
      Throws:
      IllegalAccessException - FIXME
      IllegalArgumentException - FIXME
      InvocationTargetException - FIXME
      InstantiationException - FIXME
    • getMethod

      public static List<Method> getMethod(Class<?> clazz, String methodName, boolean ignoreCase)
      Get all methods with name given in argument without check parameters.
      Parameters:
      clazz - where to search method
      methodName - method name to search
      ignoreCase - if true, ignore difference in method name case
      Returns:
      list of detected methods
    • getMethod

      public static List<Method> getMethod(String name, boolean ignoreCase)
      List method that match name, name must be [package.][class][#][method] if package, class or method missing, exception throw
      Parameters:
      name - name of the method
      ignoreCase - check exact method name if false
      Returns:
      list of method that match name
      Since:
      2.6.9
    • newInstance

      public static Object newInstance(String constructorWithParams) throws ClassNotFoundException
      Throws:
      ClassNotFoundException
    • newInstance

      public static <T> T newInstance(Class<T> clazz, String... params) throws IllegalArgumentException
      Create new instance of clazz, call constructor with params as String. Each param is converted to required type for constructor with beanutils converter, first constructor that permit instanciation is used
      Type Parameters:
      T - type to instanciate
      Parameters:
      clazz - class to instanciate
      params - parameters for constructor call
      Returns:
      new instance of clazz
      Throws:
      IllegalArgumentException - FIXME
    • getConstructor

      public static <T> List<Constructor<T>> getConstructor(Class<T> clazz, int paramNumber)
      Get all constructors that support paramNumber as parameters numbers. Varargs is supported
      Type Parameters:
      T - le type de la classe a inspecter
      Parameters:
      clazz - la classe sur lequel rechercher le constructeur
      paramNumber - le nombre de parametre souhaite pour le constructeur, -1 indique que tous les constructeur sont souhaite.
      Returns:
      list of constructors
    • isNullValue

      public static boolean isNullValue(Object value)
      Tests if the given value is null according to default value for primitive types if nedded.
      Parameters:
      value - the value to test
      Returns:
      true if value is null or default value on a primitive
      Since:
      1.1.5
    • isNullValue

      public static boolean isNullValue(boolean value)
    • isNullValue

      public static boolean isNullValue(byte value)
    • isNullValue

      public static boolean isNullValue(int value)
    • isNullValue

      public static boolean isNullValue(char value)
    • isNullValue

      public static boolean isNullValue(float value)
    • isNullValue

      public static boolean isNullValue(double value)
    • isPrimitive

      public static boolean isPrimitive(Class<?> clazz)
      Verifie si la classe est de type primitif.
      Parameters:
      clazz - nom de la classe a tester
      Returns:
      vrai si le classe est de type primitif faux sinon