知识大全 实用的Java反射工具类
Posted 属性
篇首语:社会的善意点燃了希望的火苗,但要让生活火起来,还是要靠自己。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 实用的Java反射工具类相关的知识,希望对你有一定的参考价值。
实用的Java反射工具类 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
反射的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 HibernateDao<User> * * @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 * HibernateDao<User 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)
Type genType = clazz getGenericSuperclass()
if (!(genType instanceof ParameterizedType)) logger warn(clazz getSimpleName() + s superclass not ParameterizedType ) return Object class
Type[] params = ((ParameterizedType) genType) getActualTypeArguments()
if (index >= params length || index < ) logger warn( Index + index + Size of + clazz getSimpleName() + s Parameterized Type + params length) return Object class if (!(params[index] instanceof Class)) logger warn(clazz getSimpleName() + not set the actual class on superclass generic parameter ) return Object class return (Class) params[index]
/** * 提取集合中的对象的属性 组合成List * * @param collection * 来源集合
* @param propertityName * 要提取的属性名
*/ @SuppressWarnings( unchecked )
public static List fetchElementPropertyToList(final Collection collection final String propertyName) throws Exception
List list = new ArrayList()
for (Object obj collection) list add(PropertyUtils getProperty(obj propertyName))
return list
/** * 提取集合中的对象的属性 组合成由分割符分隔的字符串
* * @param collection * 来源集合
* @param propertityName * 要提取的属性名
* @param separator * 分隔符
*/ @SuppressWarnings( unchecked )
cha138/Article/program/Java/hx/201311/26718相关参考
Java反射机制获取内部类的静态成员 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 最近需要些一
JAVA反射机制是在运行状态中对于任意一个类都能够得到这个类的所有属性和方法;对于任意一个对象都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制
Java反射机制的应用例子 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 目标用一个代理类实现两
JDK线程池ExecutorsnewCachedThreadPool()//带缓存的不够时自动添加ExecutorsnewSingleThreadExecutor()//单个线程池 线程
类装入器负责把类装入Java虚拟机(JVM)简单的应用程序可以用Java平台内置的类装入工具装入类更复杂的应用程序则倾向于定义自己定制的类装入器但是不论使用哪种类装入器在类装入过程中都可能发生许多
Java通过对Java语言规范进行修改显著简化了一些实用结构的实现在那些修改中最引人注目的就是内部类和匿名类如运用得当它们可使程序更易理解和维护本文介绍内部类和匿名
Java反射机制深入研究 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java反射是Java语
知识大全 Java Reflection (JAVA反射)详解
JavaReflection(JAVA反射)详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
java反射Annotation 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! importja
Java动态程序设计——反射介绍 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java动态程序