1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.util;
20
21 import java.lang.reflect.InvocationTargetException;
22
23 public class ReflectionUtils {
24 @SuppressWarnings("unchecked")
25 public static <T> T instantiateWithCustomCtor(String className,
26 Class<? >[] ctorArgTypes, Object[] ctorArgs) {
27 try {
28 Class<? extends T> resultType = (Class<? extends T>) Class.forName(className);
29 return resultType.getDeclaredConstructor(ctorArgTypes).newInstance(ctorArgs);
30 } catch (ClassNotFoundException e) {
31 throw new UnsupportedOperationException(
32 "Unable to find " + className, e);
33 } catch (IllegalAccessException e) {
34 throw new UnsupportedOperationException(
35 "Unable to access specified class " + className, e);
36 } catch (InstantiationException e) {
37 throw new UnsupportedOperationException(
38 "Unable to instantiate specified class " + className, e);
39 } catch (InvocationTargetException e) {
40 throw new UnsupportedOperationException(
41 "Constructor threw an exception for " + className, e);
42 } catch (NoSuchMethodException e) {
43 throw new UnsupportedOperationException(
44 "Unable to find suitable constructor for class " + className, e);
45 }
46 }
47 }