Class ObjectUtil
java.lang.Object
org.nuiton.util.ObjectUtil
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 Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionstatic ObjectCall method m with params as String.protected static ObjectchoiceArgument(Class<?> clazz, List args, boolean nullIfMissing) Permet de matcher un type d'argument attendu clazz parmi un ensemble possible de candidat.static <E extends Cloneable>
Eclone(E e) Clone object by introspection because Cloneable interface don't permit to call clone :(.protected static Objectstatic ObjectCreate new object from string like org.nuiton.Toto(name=machine, int=10) where machine and int is properties on org.nuiton.Toto object.static <E> EdeepClone(E e) Use serialization/deserialization to do deep clone of objectstatic <T> List<Constructor<T>> getConstructor(Class<T> clazz, int paramNumber) Get all constructors that support paramNumber as parameters numbers.Get all methods with name given in argument without check parameters.List method that match name, name must be [package.]static booleanisNullValue(boolean value) static booleanisNullValue(byte value) static booleanisNullValue(char value) static booleanisNullValue(double value) static booleanisNullValue(float value) static booleanisNullValue(int value) static booleanisNullValue(Object value) Tests if the given value is null according to default value for primitive types if nedded.static booleanisPrimitive(Class<?> clazz) Verifie si la classe est de type primitif.static <E> EnewInstance(Class<E> clazz, Collection<?> args, boolean nullIfMissing) Invoke constructor on clazz to create new instance.static <T> TnewInstance(Class<T> clazz, String... params) Create new instance of clazz, call constructor with params as String.static ObjectnewInstance(String constructorWithParams)
-
Field Details
-
CLASS_METHOD_SEPARATOR
Used to know what is separator between class and method- See Also:
-
ZERO
-
ZEROC
-
ZEROF
-
ZEROL
-
ZEROD
-
ZEROB
-
-
Method Details
-
newInstance
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 instanciateargs- all possible parameter that constructor can usednullIfMissing- 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
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 typesnullIfMissing- pour retourner nulle si l'argument n'est pas trouvé- Returns:
- le type d'argument trouvé
-
create
public static Object create(String classnameAndProperties) throws ClassNotFoundException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException 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- FIXMEIllegalAccessException- FIXMEInstantiationException- FIXMENoSuchMethodException- FIXMEInvocationTargetException- FIXME
-
convert
-
clone
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
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
public static Object call(Object o, Method m, String... params) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException 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 callm- method to callparams- parameters for method call- Returns:
- returned method's value
- Throws:
IllegalAccessException- FIXMEIllegalArgumentException- FIXMEInvocationTargetException- FIXMEInstantiationException- FIXME
-
getMethod
Get all methods with name given in argument without check parameters.- Parameters:
clazz- where to search methodmethodName- method name to searchignoreCase- if true, ignore difference in method name case- Returns:
- list of detected methods
-
getMethod
List method that match name, name must be [package.][class][#][method] if package, class or method missing, exception throw- Parameters:
name- name of the methodignoreCase- check exact method name if false- Returns:
- list of method that match name
- Since:
- 2.6.9
-
newInstance
- Throws:
ClassNotFoundException
-
newInstance
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 instanciateparams- parameters for constructor call- Returns:
- new instance of clazz
- Throws:
IllegalArgumentException- FIXME
-
getConstructor
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 constructeurparamNumber- le nombre de parametre souhaite pour le constructeur, -1 indique que tous les constructeur sont souhaite.- Returns:
- list of constructors
-
isNullValue
Tests if the given value is null according to default value for primitive types if nedded.- Parameters:
value- the value to test- Returns:
trueif 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
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
-