java对枚举的类反射使用

import java.lang.reflect.Method;
import java.util.LinkedHashMap;
import java.util.Map;

import org.apache.commons.lang3.reflect.MethodUtils;
/**
 *
 * <strong>功能:</strong>枚举使用工具
 * <strong>作者:</strong>Gary Huang
 * <strong>日期:</strong> 2014-3-5
 * <strong>版权:<strong>版权所有(C) 2014,QQ 834865081
 */
public class EumnUtil {

	public static String getText(Class<?> ref , Object code){
		return parseEumn(ref).get( TransformUtils.toString(code) ) ;
	}

	public static <T> Map<String, String> parseEumn(Class<T> ref){
		Map<String, String> map = new LinkedHashMap<String, String>() ;
		if(ref.isEnum()){
			T[] ts = ref.getEnumConstants() ;
			for(T t : ts){
				String text = getInvokeValue(t, "getText") ;
				Enum<?> tempEnum = (Enum<?>) t ;
				if(text == null){
					text = tempEnum.name() ;
				}
				String code = getInvokeValue(t, "getCode") ;
				if(code == null){
					code = TransformUtils.toString( tempEnum.ordinal() ) ;
				}
				map.put(code , text ) ;
			}
		}
		return map ;
	}

	static <T> String getInvokeValue(T t , String methodName){
		try {
			Method method = MethodUtils.getAccessibleMethod( t.getClass() , methodName);
			String text = TransformUtils.toString(method.invoke( t )) ;
			return text ;
		} catch (Exception e) {
			return null ;
		}
	}

}

java对枚举的类反射使用

时间: 2024-10-10 18:05:44

java对枚举的类反射使用的相关文章

EnumHelper枚举帮助类——反射取得枚举Description

1.需要引用的命名空间: 1 using System.Collections.Generic;//键值对 2 using System.Reflection;//反射 3 System.ComponentModel;//指定属性 2.直接上干货,需要的拿走: (1).列举所有枚举值和描述 1 /// <summary> 2 /// 列举所有枚举值和描述 3 /// </summary> 4 /// <typeparam name="T"></

Java---类反射(2)---类反射加强

经过前面的一篇博客,Java-类反射(1),相信大家对类反射有了一定的了解了. 下面来进行对类反射的加强,了解一下怎么通过类反射去new一个对象, 怎么通过类反射去访问其他类的方法. 怎么通过类反射去访问其他类的成员变量. 大家也许认为一个类的私有方法,私有的成员变量是其他类访问不到.但是,类反射是可以通过暴力访问去访问的. 还有:最后要模拟Java内省的功能 类的调用(调用类中的成员) ★ 构造类对象 使用构造器新建对象.根据指定的参数类型找到相应的构造函数,传入相应参数调用执行,以创建一个新

使用反射创建Bean、Spring中是如何根据类名配置创建Bean实例、Java提供了Class类获取类别的字段和方法,包括构造方法

Java提供了Class类,可以通过编程方式获取类别的字段和方法,包括构造方法 获取Class类实例的方法: 类名.class 实例名.getClass() Class.forName(className) public class RefTest { @Test public void testRef(){ //Class cls = RefTest.class; //Class.forName("com.jboa.service.RefTest"); //new RefTest()

Java 类反射机制分析

一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.在计算机科学领域,反射是一类应用,它们能够自描述和自控制.这类应用通过某种机制来实现对自己行为的描述和检测,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义. 在Java中的反射机制,被称为Reflection.(大家看到这个单词,第一个想法应该就是去开发文档中搜一下了.)它允许运行中的Java程序对自身进行检查,并能直接操作程序的内部属性或方法.Reflection机制

java高级值类反射

 类反射 类反射,这是属于java高级的技术了,如果把这个学好了,那么你的java学习之路就上了一个台阶了. 一.什么是类反射? 1.JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调           用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制. 2.反射(Reflection)是Java程序开发语言的特征之一,它允许运行中的Java程序对自身进行检查, 也称自审,并能直接操作

java之 ------ 类反射【详解】

一.什么是类反射 ★JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动 态调用对象的方法的功能称为Java语言的反射机制. 反射(Reflection)是Java程序开发语言的特征之一,它允许运行中的Java程序对自身进行检查, 也称自审,并能直接操作程序的内部属性.例如,使用它能获得Java类中各成员的名 称并显示出来. Java的这一能力在实际应用中应用得很多,在其它的程序语言中根本就

如何利用缓存机制实现JAVA类反射性能提升30倍

一次性能提高30倍的JAVA类反射性能优化实践 文章来源:宜信技术学院 & 宜信支付结算团队技术分享第4期-支付结算部支付研发团队高级工程师陶红<JAVA类反射技术&优化> 分享者:宜信支付结算部支付研发团队高级工程师陶红 原文首发于宜信支付结算技术团队公号:野指针 在实际工作中的一些特定应用场景下,JAVA类反射是经常用到.必不可少的技术,在项目研发过程中,我们也遇到了不得不运用JAVA类反射技术的业务需求,并且不可避免地面临这个技术固有的性能瓶颈问题. 通过近两年的研究.尝

java面向对象--类加载器及反射

类加载器 jvm 和 类的关系 当调用 java命令运行一个java程序时,会启动一个java虚拟机进程.同一个jvm的所有线程.所有变量都处于同一个进程里,都使用该jvm进程的内存区. jvm进程终止的情况: 1.程序运行到最后正常结束. 2.遇到System.exit()或Runtime.getRuntime.exit(). 3.遇到未捕获的异常或错误 4.程序所在的平台强制结束了JVM进程 jvm进程终止,jvm内存中的数据将全部丢失. 类加载 当程序主动使用某个类时,如果该类还未被加载到

深度分析Java的枚举类型—-枚举的线程安全性及序列化问题

原文:深度分析Java的枚举类型--枚举的线程安全性及序列化问题 枚举是如何保证线程安全的 要想看源码,首先得有一个类吧,那么枚举类型到底是什么类呢?是enum吗?答案很明显不是,enum就和class一样,只是一个关键字,他并不是一个类,那么枚举是由什么类维护的呢,我们简单的写一个枚举: public enum t { SPRING,SUMMER,AUTUMN,WINTER; } 然后我们使用反编译,看看这段代码到底是怎么实现的,反编译(Java的反编译)后代码内容如下: public fin