浏览 1530 次
锁定老帖子 主题:通过类名获取特定的类型数组
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-07-12
耗费脑力一堆,但是答案相当的简单,代码如下 public static Object[] getArrayByClassName(String className, int length) throws NegativeArraySizeException, ClassNotFoundException { return (Object[]) Array.newInstance(Class.forName(className), length); } 别看这个返回是Object[],你如果使用反射getClass().getName() 得到的就是你想要的数组类型,适用于枚举。 举个例子: public enum NoteMessage { A("A value"), B("B value"); private final String value; public String getValue() { return value; } NoteMessage(String value) { this.value = value; } } 测试代码 String[] strs = new String[] { "A", "B" }; Object[] param1 = getArrayByClassName("NoteMessage", strs.length); Object[] param2 = new Object[strs.length]; for (int i = 0; i < strs.length; i++) { param1[i] = getFieldObject(Class.forName("NoteMessage",strs[i]); param2[i] = getFieldObject(Class.forName("NoteMessage",strs[i]); } System.out.println(param1.getClass().getName()); System.out.println(param2.getClass().getName()); getFieldObject方法如下 public static Object getFieldObject(Object obj, String fieldName) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException, NoSuchMethodException, ClassNotFoundException { Field field = obj.getClass().getDeclaredField(fieldName); field.setAccessible(true); return field.get(obj); } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |