改成
Constructor con=clazz.getConstructor(new Class[]{String.class});
试试
实用的Java反射工具类 反射的Utils函数集合
提供访问私有变量 获取泛型类型Class 提取集合中元素的属性等Utils函数
package reflection
import java lang reflect Field import java lang reflect Modifier import java lang reflect ParameterizedType import java lang reflect Type import java util ArrayList import java util Collection import java util List
import mons beanutils PropertyUtils import mons lang StringUtils import slf j Logger import slf j LoggerFactory import springframework util Assert
/** * 反射的Utils函数集合 提供访问私有变量 获取泛型类型Class 提取集合中元素的属性等Utils函数
* * @author lei */ public class ReflectionUtils {
private static Logger logger = LoggerFactory getLogger(ReflectionUtils class)
private ReflectionUtils() { }
/** * 直接读取对象属性值 无视private/protected修饰符 不经过getter函数
*/ public static Object getFieldValue(final Object object final String fieldName) { Field field = getDeclaredField(object fieldName)
if (field == null)
throw new IllegalArgumentException( Could not find field [ + fieldName + ] on target [ + object + ] )
makeAccessible(field)
Object result = null try { result = field get(object) } catch (IllegalAccessException e) { logger error( 不可能抛出的异常{} e getMessage()) } return result }
/** * 直接设置对象属性值 无视private/protected修饰符 不经过setter函数
*/ public static void setFieldValue(final Object object final String fieldName final Object value) { Field field = getDeclaredField(object fieldName)
if (field == null)
throw new IllegalArgumentException( Could not find field [ + fieldName + ] on target [ + object + ] )
makeAccessible(field)
try { field set(object value) } catch (IllegalAccessException e) { logger error( 不可能抛出的异常 {} e getMessage()) } }
/** * 循环向上转型 获取对象的DeclaredField */ protected static Field getDeclaredField(final Object object final String fieldName) { Assert notNull(object object不能为空 ) return getDeclaredField(object getClass() fieldName) }
/** * 循环向上转型 获取类的DeclaredField */ @SuppressWarnings( unchecked )
protected static Field getDeclaredField(final Class clazz final String fieldName) { Assert notNull(clazz clazz不能为空 ) Assert hasText(fieldName fieldName ) for (Class superClass = clazz superClass != Object class superClass = superClass getSuperclass()) { try { return superClass getDeclaredField(fieldName) } catch (NoSuchFieldException e) { // Field不在当前类定义 继续向上转型 } } return null }
/** * 强制转换fileld可访问
*/ protected static void makeAccessible(final Field field) { if (!Modifier isPublic(field getModifiers()) || !Modifier isPublic(field getDeclaringClass() getModifiers())) { field setAccessible(true) } }
/** * 通过反射 获得定义Class时声明的父类的泛型参数的类型 如public UserDao extends HibernateDaoUser * * @param clazz *The class to introspect * @return the first generic declaration or Object class if cannot be *determined */ @SuppressWarnings( unchecked )
public static Class getSuperClassGenricType(final Class clazz) { return getSuperClassGenricType(clazz ) }
/** * 通过反射 获得定义Class时声明的父类的泛型参数的类型 如public UserDao extends * HibernateDaoUser Long * * @param clazz *clazz The class to introspect * @param index *the Index of the generic ddeclaration start from * @return the index generic declaration or Object class if cannot be *determined */
@SuppressWarnings( unchecked )
public static Class getSuperClassGenricType(final Class clazz final int index) {
推荐阅读
- 夜晚无人直播教程,无人直播怎么赚钱
- gis图上怎么添加小图的简单介绍
- 电影票网站毕业设计,电影院订票小程序毕业设计
- 游戏团队经营,游戏运营团队工作范畴
- 田园农场游戏java代码 田园农场游戏java代码是多少
- 手机视频看不了是什么原因,手机来视频不显示是什么原因
- switch即时战斗游戏,switch 战斗游戏
- 微信上面的视频号怎么弄,微信上面的视频号怎么弄的
- go语言计算器实现 go语言数学计算