`

Java中的反射机制使用总结

阅读更多

现在再总结一下最近使用的反射机制:
一.反射使用:根据函数名称查找对应的函数并执行
1.调用的函数的传入参数为空,例子如下:

//获取需要调用的方法所在的类的实例
	Object object = Class.forName("com.cnpc.services."+className).newInstance();
// 返回方法名为functionName的一个 Method 对象,后面跟的是该方法参数
				Method method = object.getClass().getMethod(functionName,null);
method.invoke(object,null);


2.调用的函数的传入参数为一个List<T>类型,例子如下:

List<Object> provideBeanList =  CommonJSONListOperation(content, provideClass);
					// 返回方法名为functionName的一个 Method 对象,后面跟的是该方法参数
					Method method = object.getClass().getMethod(functionName,
							new Class[]{List.class});
					// 执行该方法
					result = JSONTransfer.getJsonArrStrFromList(method.invoke(object,
							provideBeanList));


二反射使用:根据一个对象,遍历该对象的各个属性,并找到对应的属性赋值,下边以Date类型为里,遍历对象中的属性,如果属性中含有Date类型,则判断,如果该Date类型的属性为null,则new一个赋值,否则不做操作:

	Field[] fields = obj.getClass().getDeclaredFields();
			for(Field f:fields)
			{
				if(f.getType().toString().equals("class java.util.Date"))
				{
					
					String dateName = f.getName();
					Object o;			
					String functionNameGet = "get"+toUpperrCaseInitial(dateName);
					String functionNameSet = "set"+toUpperrCaseInitial(dateName);
					Method m = obj.getClass().getMethod(functionNameGet,null);
					if(m.invoke(obj, null)==null)
					{
						Method m_set = obj.getClass().getMethod(functionNameSet, new Class[]{java.util.Date.class});
						m_set.invoke(obj,new Object[]{new java.util.Date()});
						
					}
				}
			}

  这里是通过get,set方法实现的读取对应属性的值和设置对应属性的值,不知道还有没更简便的方法。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics