1.調用構造函數的例子
/**
* Invoke a constructor on a class using reflection.
*
* @param klass The class.
* @param classes The classes in the parameter list.
* @param objects The objects to be used as parameters.
* @return The object constructed.
*/
public static Object invokeConstructor(final Class klass, final Class[] classes, final Object[] objects) {
try {
Constructor constructor;
try {
constructor = klass.getDeclaredConstructor(classes);
}
catch (NoSuchMethodException e) {
constructor = klass.getConstructor(classes);
}
constructor.setAccessible(true);
return constructor.newInstance(objects);
}
catch (NoSuchMethodException e) {
throw new RuntimeException(e.getMessage());
}
catch (InstantiationException e) {
throw new RuntimeException(e.getMessage());
}
catch (IllegalAccessException e) {
throw new RuntimeException(e.getMessage());
}
catch (InvocationTargetException e) {
throw new RuntimeException(e.getTargetException().getMessage());
}
}
2.調用域的例子
/**
* Get the value of an instance field on an object using reflection.
*
* @param instance The instance of the object.
* @param fieldName The name of the field.
* @return The object returned by getting the field.
*/
public static Object invokeGetInstanceField(final Object instance, final String fieldName) {
try {
Field field;
try {
field = instance.getClass().getField(fieldName);
}
catch (NoSuchFieldException e) {
field = instance.getClass().getDeclaredField(fieldName);
}
field.setAccessible(true);
return field.get(instance);
}
catch (NoSuchFieldException e) {
throw new RuntimeException(e.getMessage());
}
catch (IllegalAccessException e) {
throw new RuntimeException(e.getMessage());
}
}
3.調用類方法的例子
/**
* Invoke an instance method on an object using reflection.
*
* @param instance The instance of the object.
* @param methodName The name of the method.
* @param classes The classes in the parameter list.
* @param objects The objects to be used as parameters.
* @return The object returned by invoking the method.
*/
public static Object invokeInstanceMethod(
final Object instance, final String methodName, final Class[] classes, final Object[] objects) {
try {
Method method;
try {
method = instance.getClass().getDeclaredMethod(methodName, classes);
}
catch (NoSuchMethodException e) {
method = instance.getClass().getMethod(methodName, classes);
}
method.setAccessible(true);
return method.invoke(instance, objects);
}
catch (NoSuchMethodException e) {
throw new RuntimeException(e.getMessage());
}
catch (IllegalAccessException e) {
throw new RuntimeException(e.getMessage());
}
catch (InvocationTargetException e) {
throw new RuntimeException(e.getTargetException().getMessage());
}
}
4.調用靜態方法的例子
/**
* Invoke a static method on a class using reflection.
*
* @param klass The class.
* @param methodName The name of the method.
* @param classes The classes in the parameter list.
* @param objects The objects to be used as parameters.
* @return The object returned by invoking the method.
*/
public static Object invokeStaticMethod(
final Class klass, final String methodName, final Class[] classes, final Object[] objects) {
try {
Method method;
try {
method = klass.getDeclaredMethod(methodName, classes);
}
catch (NoSuchMethodException e) {
method = klass.getMethod(methodName, classes);
}
method.setAccessible(true);
return method.invoke(klass, objects);
}
catch (NoSuchMethodException e) {
throw new RuntimeException(e.getMessage());
}
catch (IllegalAccessException e) {
throw new RuntimeException(e.getMessage());
}
catch (InvocationTargetException e) {
throw new RuntimeException(e.getTargetException().getMessage());
}
}
/**
* Invoke a constructor on a class using reflection.
*
* @param klass The class.
* @param classes The classes in the parameter list.
* @param objects The objects to be used as parameters.
* @return The object constructed.
*/
public static Object invokeConstructor(final Class klass, final Class[] classes, final Object[] objects) {
try {
Constructor constructor;
try {
constructor = klass.getDeclaredConstructor(classes);
}
catch (NoSuchMethodException e) {
constructor = klass.getConstructor(classes);
}
constructor.setAccessible(true);
return constructor.newInstance(objects);
}
catch (NoSuchMethodException e) {
throw new RuntimeException(e.getMessage());
}
catch (InstantiationException e) {
throw new RuntimeException(e.getMessage());
}
catch (IllegalAccessException e) {
throw new RuntimeException(e.getMessage());
}
catch (InvocationTargetException e) {
throw new RuntimeException(e.getTargetException().getMessage());
}
}
2.調用域的例子
/**
* Get the value of an instance field on an object using reflection.
*
* @param instance The instance of the object.
* @param fieldName The name of the field.
* @return The object returned by getting the field.
*/
public static Object invokeGetInstanceField(final Object instance, final String fieldName) {
try {
Field field;
try {
field = instance.getClass().getField(fieldName);
}
catch (NoSuchFieldException e) {
field = instance.getClass().getDeclaredField(fieldName);
}
field.setAccessible(true);
return field.get(instance);
}
catch (NoSuchFieldException e) {
throw new RuntimeException(e.getMessage());
}
catch (IllegalAccessException e) {
throw new RuntimeException(e.getMessage());
}
}
3.調用類方法的例子
/**
* Invoke an instance method on an object using reflection.
*
* @param instance The instance of the object.
* @param methodName The name of the method.
* @param classes The classes in the parameter list.
* @param objects The objects to be used as parameters.
* @return The object returned by invoking the method.
*/
public static Object invokeInstanceMethod(
final Object instance, final String methodName, final Class[] classes, final Object[] objects) {
try {
Method method;
try {
method = instance.getClass().getDeclaredMethod(methodName, classes);
}
catch (NoSuchMethodException e) {
method = instance.getClass().getMethod(methodName, classes);
}
method.setAccessible(true);
return method.invoke(instance, objects);
}
catch (NoSuchMethodException e) {
throw new RuntimeException(e.getMessage());
}
catch (IllegalAccessException e) {
throw new RuntimeException(e.getMessage());
}
catch (InvocationTargetException e) {
throw new RuntimeException(e.getTargetException().getMessage());
}
}
4.調用靜態方法的例子
/**
* Invoke a static method on a class using reflection.
*
* @param klass The class.
* @param methodName The name of the method.
* @param classes The classes in the parameter list.
* @param objects The objects to be used as parameters.
* @return The object returned by invoking the method.
*/
public static Object invokeStaticMethod(
final Class klass, final String methodName, final Class[] classes, final Object[] objects) {
try {
Method method;
try {
method = klass.getDeclaredMethod(methodName, classes);
}
catch (NoSuchMethodException e) {
method = klass.getMethod(methodName, classes);
}
method.setAccessible(true);
return method.invoke(klass, objects);
}
catch (NoSuchMethodException e) {
throw new RuntimeException(e.getMessage());
}
catch (IllegalAccessException e) {
throw new RuntimeException(e.getMessage());
}
catch (InvocationTargetException e) {
throw new RuntimeException(e.getTargetException().getMessage());
}
}