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 import org.apache.hadoop.classification.InterfaceAudience;
24
25 @InterfaceAudience.Private
26 public class ReflectionUtils {
27 @SuppressWarnings("unchecked")
28 public static <T> T instantiateWithCustomCtor(String className,
29 Class<? >[] ctorArgTypes, Object[] ctorArgs) {
30 try {
31 Class<? extends T> resultType = (Class<? extends T>) Class.forName(className);
32 return resultType.getDeclaredConstructor(ctorArgTypes).newInstance(ctorArgs);
33 } catch (ClassNotFoundException e) {
34 throw new UnsupportedOperationException(
35 "Unable to find " + className, e);
36 } catch (IllegalAccessException e) {
37 throw new UnsupportedOperationException(
38 "Unable to access specified class " + className, e);
39 } catch (InstantiationException e) {
40 throw new UnsupportedOperationException(
41 "Unable to instantiate specified class " + className, e);
42 } catch (InvocationTargetException e) {
43 throw new UnsupportedOperationException(
44 "Constructor threw an exception for " + className, e);
45 } catch (NoSuchMethodException e) {
46 throw new UnsupportedOperationException(
47 "Unable to find suitable constructor for class " + className, e);
48 }
49 }
50 }