java 反射 枚举 实例_java中反射,枚举实际应用例子

对于java中反射,枚举的例子我们相信许多的朋友不怎么清楚了,对于这个小编就来为各位介绍java中反射,枚举实际应用例子,希望例子能够帮助到各位。

遇到的问题

一个List的列表。。

列表中有枚举类型

枚举类型在页面显示的 时候就不能通过。属性来取数据

用反射

根据名字去匹配对应的类名 从而获取对应的属性值(反射)

jsp页面

tld

/p>

PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"

"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

1.0

2.4

m

/tlds/MethodUtil.tld

This Tag Library makes user develope JSP with method Value component easily.

value

com.yq1012.MethodUtilTag

empty

className

true

true

className

method

true

true

method

paramType

false

true

paramType

param

false

true

param

path

false

true

反射帮助类

import java.io.IOException;

import java.lang.reflect.Method;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.JspWriter;

import javax.servlet.jsp.tagext.SimpleTagSupport;

@SuppressWarnings("unused")

public class MethodUtilTag extends SimpleTagSupport {

private String className;

private String method;

private String paramType;

private String param;

private String path;

@Override

@SuppressWarnings("unchecked")

public void doTag() throws JspException, IOException {

JspWriter out = getJspContext().getOut();

Class[] parasClass = null;

Object[] args = null;

if(StringUtil.isNotEmpty(param)) {

if(param.contains(",")) {

String[] params = StringUtil.split(param, ",", false);

parasClass = new Class[params.length];

args = new Object[params.length];

for (int i = 0; i < parasClass.length; i ) {

parasClass[i] = String.class;

args[i] = params[i];

}

}

}

Class classType = String.class;

String value = "";

if("int".equals(paramType) || "Integer".equals(paramType)) {

classType = Integer.class;

} else if("double".equals(paramType) || "Double".equals(paramType)) {

classType = Double.class;

}

if(StringUtil.isNotEmpty(className) && StringUtil.isNotEmpty(method)) {

try {

String packagePath = this.className;

if(StringUtil.isNotEmpty(path)) {

packagePath = this.path "." packagePath;

} else {

packagePath = "这里是类的包名字." packagePath;

}

Class clazz = Class.forName(packagePath);

Object newInstance = clazz.newInstance();

Method m = null;

Object object = null;

if(parasClass != null) {

m = clazz.getMethod(method, parasClass);

object = m.invoke(newInstance, args);

} else {

m = clazz.getMethod(method, classType);

object = m.invoke(newInstance, new Object[]{param});

}

value = object.toString();

} catch (Exception e) {

value = "";

e.printStackTrace();

}

}

out.print(value);

}

public String getClassName() {

return className;

}

public void setClassName(String className) {

this.className = className;

}

public String getMethod() {

return method;

}

public void setMethod(String method) {

this.method = method;

}

public String getParam() {

return param;

}

public void setParam(String param) {

this.param = param;

}

public String getParamType() {

return paramType;

}

public void setParamType(String paramType) {

this.paramType = paramType;

}

public String getPath() {

return path;

}

public void setPath(String path) {

this.path = path;

}

}

反射转换实体类

public class xxxUtil {

public String  convert(String value){

if ("yq1012".equals(value)) {

return 枚举.getName();//枚举的要导入对应的包名字

}  else {

return null;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值