求教一个java中BeanUtils转换器的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求教一个java中BeanUtils转换器的问题相关的知识,希望对你有一定的参考价值。

ConvertUtils.register( new Converter()
public Object convert(Class type, Object value)
/*书写转换内容*/

, Date. class);
-------------
这样注册了一个转换器。
我想求教一下其中的convert方法,传递进去了2个参数,value是指被转换的参数我理解。
但是前面的Class type指得是什么?有什么用?写完整个代码好像没有看到需要用到的地方啊
----------------下面是完整代码-------------

public class WebUtils
public static <T> T request2Bean(HttpServletRequest request, Class<T> beanClass)
try
T bean=beanClass.newInstance();
Map map=request.getParameterMap();
ConvertUtils.register(new Converter()
@Override
public Object convert(Class type, Object value)
if(value==null)
return null;

String str=(String) value;
if(str.trim()==null)
return null;

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
try
return sdf.parse(str);
catch (ParseException e)
throw new RuntimeException(e);


, Date.class);
BeanUtils.populate(bean, map);
return bean;
catch(Exception e)
throw new RuntimeException(e);


class type 是value的真实类型。以后泛型强大了,就不会有这种方式了。 参考技术A Class type是指要转换成这个类型的,你代码中没有用到

关于C语言的语法中类型转换的一个问题。求教C语言高手。

在Lua语言的源代码中有如下宏定义:
#define UNUSED(x) ((void)(x)) /* to avoid warnings */
有如下用法:
static void f_luaopen (lua_State *L, void *ud) global_State *g = G(L);// get global_State ptr saved in lua_State UNUSED(ud);// 这一句看不懂,求指导~ stack_init(L, L); /* init stack */ sethvalue(L, gt(L), luaH_new(L, 0, 2)); /* table of globals */ sethvalue(L, registry(L), luaH_new(L, 0, 2)); /* registry */ luaS_resize(L, MINSTRTABSIZE); /* initial size of string table */ luaT_init(L); luaX_init(L); luaS_fix(luaS_newliteral(L, MEMERRMSG)); g->GCthreshold = 4*g->totalbytes;
我不知道上面函数中第二句的作用。求指教!谢谢!

参考技术A 有误吧?UNUSED的宏定义是变量类型,而代码中UNUSED(ud)的ud是指针啊!如果宏定义是#define UNUSED(x) ((void *)(x))的话就正确了。 参考技术B #define UNUSED(x) ((void)(x)) 这是宏定义 在编译的时候 把UNUSED(x)替换为((void)(x))编译
就像#define PI 3.14一样
所以那句在编译的时候按照((void)(ud))编译追问

谢谢您的回答!

我能理解您的意思。但是单独的一行转换

((void)ud);

有什么意义呢?

下面是源代码:

追答

你注释说的很清楚了 避免警告 如果ud只定义不使用 编译时就会有警告 单独这一句就是为了使用它 避免警告 你可以把这句注释掉再编译试试 比较不同

追问

学习了!谢谢您!

本回答被提问者采纳

以上是关于求教一个java中BeanUtils转换器的问题的主要内容,如果未能解决你的问题,请参考以下文章

map转实体工具类

java框架BeanUtils练习

Java中BeanUtils的日期转换。程序运行失败。

Java 代码实例 14BeanUtils用法详解,附源码分析

JAVA_Converter_字符串类型转Date类型

java.lang.ClassCastException:[Ljava.lang.Object;无法强制转换或 BeanUtils.copyProperties 不起作用