Package net.sf.basedb.util
Class ClassUtil
java.lang.Object
net.sf.basedb.util.ClassUtil
Utility class for
Class
objects.- Version:
- 2.0
- Author:
- Nicklas
- Last modified
- $Date: 2019-06-14 14:54:55 +0200 (fre, 14 juni 2019) $
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic <C> Class<? extends C>
checkAndLoadClass
(ClassLoader loader, String name, boolean publicNoArgConstructor, Class<C> iface, Class<?>... interfaces) Check if a specified class exists and, optionally, if it has public no-argument constructor and implements a set of specific interfaces or superclasses.static void
checkClass
(Class<?> clazz, boolean publicNoArgConstructor, Class<?>... interfaces) Check if a specified class has public no-argument constructor and implements a set of specific interfaces or superclasses.static <I> Constructor<I>
findConstructor
(Class<I> clazz, Object[] parameters) Find a constructor for the specified class which takes parameters of the specified types taking superclasses and interfaces into account.static Method
findMethod
(Class<?> clazz, String name, Class<?>... arguments) Find a method in aclazz
with the givenname
that takes the given list ofarguments
.getInterfaces
(Class<?> clazz) Get all interfaces a class implements, including those implemented by superclasses.static boolean
isAssignable
(Class<?>[] classes, Object[] values) Check if one array of class objects is assignment compatible with values in another array.static <I> I
newInstance
(Class<I> clazz) Utility method for creating a new instance from a class with a default no-argument constructor.static <I> I
newInstance
(ClassLoader classLoader, String name, Class<I> iface, Class<?>... interfaces) Utility method for creating a new instance from a class (given by name) with a default no-argument constructor.
-
Constructor Details
-
ClassUtil
public ClassUtil()
-
-
Method Details
-
newInstance
Utility method for creating a new instance from a class with a default no-argument constructor. Exceptions are wrapped in BaseExceptions.- Since:
- 3.14
-
newInstance
public static <I> I newInstance(ClassLoader classLoader, String name, Class<I> iface, Class<?>... interfaces) Utility method for creating a new instance from a class (given by name) with a default no-argument constructor. Exceptions are wrapped in BaseExceptions.- Since:
- 3.16
- See Also:
-
findConstructor
Find a constructor for the specified class which takes parameters of the specified types taking superclasses and interfaces into account. This method finds the first declared constructor which can accept parameters of the specified type.- Parameters:
clazz
- The class to find a constructor forparameters
- The parameters that are going to be sent to the constructor'sConstructor.newInstance(Object[])
method- Returns:
- A constructor object or null if no constructor was found
-
isAssignable
Check if one array of class objects is assignment compatible with values in another array. Ie. theClass.isAssignableFrom(Class)
method returns true for each element in theclasses
array with respect to the class of the corresponding value in thevalues
array. Null elements in thevalues
array are ignored.- Parameters:
classes
- The class objects representing the parameters we want to assign values tovalues
- The parameter values to assign- Returns:
- TRUE if all parameters are assignable
-
getInterfaces
Get all interfaces a class implements, including those implemented by superclasses.- Parameters:
clazz
- TheClass
to check- Returns:
- A
Set
containing theClass
objects for the interfaces
-
checkAndLoadClass
public static <C> Class<? extends C> checkAndLoadClass(ClassLoader loader, String name, boolean publicNoArgConstructor, Class<C> iface, Class<?>... interfaces) throws ClassNotFoundException, NoSuchMethodException, ClassCastException Check if a specified class exists and, optionally, if it has public no-argument constructor and implements a set of specific interfaces or superclasses.- Parameters:
loader
- The classloader used to load the class, or null to use the default classloadername
- The fully qualified name of class to checkpublicNoArgConstructor
- TRUE to check if a public no-argument constructor existsinterfaces
- An array of class objects representing interfaces or superclasses that the class to check must implement or extend- Returns:
- The
Class
object for the named class - Throws:
ClassNotFoundException
- If a class with the specified name isn't foundNoSuchMethodException
- If a public no-argument constructor isn't foundClassCastException
- If the class doesn't implement or extend all of the interfaces/superclasses- Since:
- 2.5
-
checkClass
public static void checkClass(Class<?> clazz, boolean publicNoArgConstructor, Class<?>... interfaces) throws NoSuchMethodException, ClassCastException Check if a specified class has public no-argument constructor and implements a set of specific interfaces or superclasses.- Parameters:
clazz
- The clazz to checkpublicNoArgConstructor
- TRUE to check if a public no-argument constructor existsinterfaces
- An array of class objects representing interfaces or superclasses that the class to check must implement or extend- Throws:
NoSuchMethodException
- If a public no-argument constructor isn't foundClassCastException
- If the class doesn't implement or extend all of the interfaces/superclasses- Since:
- 2.10
-
findMethod
Find a method in aclazz
with the givenname
that takes the given list ofarguments
. This method is just callingClass.getMethod(String, Class...)
but returns null instead of throwing an exception in case the method is not found.- Parameters:
clazz
- The class to look for the method inname
- The name of the methodarguments
- The class types of the arguments- Returns:
- The method or null if not found
- Since:
- 2.7
-