ResponseUtil反射制造唯一结果
调用:通过反射调用同一个类型的返回值
return fillResponse(response,Constants.SUCCESS,"获取数据成功","taskList",taskList);
(1)
/**
* 回复结果
* @param obj
* @param code
* @param description
* @param paramName
* @param paramValue
* @return
*/
private String fillResponse(final Object obj ,final String code , final String description,final String paramName,final Object paramValue ){
return ResponseUtil.fillResponse(obj, code, description, paramName, paramValue);
}
private String fillResponseBase(final Object obj ,final String code , final String description){
return ResponseUtil.fillResponseBase(obj, code, description);
}
(2)
package com.venustech.scanner.webservice.vulntask.util;
import java.lang.reflect.Method; import com.venustech.vwf.utils.json.JsonUtils;
/**
*
* 类说明.优化使用
* <pre>
* 2015年12月11日 songjian
* </pre>
*/
public class ResponseUtil {
/**
* 针对只有code和description的情况 +
* @param object
* @param code
* @param description
* @param paramName
* @param paramVal
* @return
*/
public static <T> String fillResponse(final T object,final String code , final String description ,final String paramName , final Object paramVal) {
if (object == null) {
return null;
}
Class<T> clazz = (Class<T>) object.getClass();
try {
Method get_Method_code = clazz.getMethod("getCode" ); //获取getMethod方法
Method set_Method_code = clazz.getMethod("setCode", get_Method_code.getReturnType());//获得属性set方法
set_Method_code.invoke(object, code); Method get_Method_des= clazz.getMethod("getDescription" ); //获取getMethod方法
Method set_Method_des = clazz.getMethod("setDescription", get_Method_des.getReturnType());//获得属性set方法
set_Method_des.invoke(object, description);
if(paramName!=""){
Method get_Method = clazz.getMethod("get" + getMethodName(paramName)); //获取getMethod方法
Method set_Method = clazz.getMethod("set" + getMethodName(paramName), get_Method.getReturnType());//获得属性set方法
set_Method.invoke(object, paramVal);
}
} catch (Exception e) {
}
return JsonUtils.toJson(object);
}
/**
* 针对只有code和description的情况
* @param object
* @param code
* @param description
* @return
*/
public static <T> String fillResponseBase(final T object,final String code , final String description) {
if (object == null) {
return null;
}
Class<T> clazz = (Class<T>) object.getClass();
try {
Method get_Method_code = clazz.getMethod("getCode" ); //获取getMethod方法
Method set_Method_code = clazz.getMethod("setCode", get_Method_code.getReturnType());//获得属性set方法
set_Method_code.invoke(object, code); Method get_Method_des= clazz.getMethod("getDescription" ); //获取getMethod方法
Method set_Method_des = clazz.getMethod("setDescription", get_Method_des.getReturnType());//获得属性set方法
set_Method_des.invoke(object, description);
} catch (Exception e) {
}
return JsonUtils.toJson(object);
} private static String getMethodName(final String fildeName) {
byte[] items = fildeName.getBytes();
items[0] = (byte) ((char) items[0] - 'a' + 'A');
return new String(items);
}
}
ResponseUtil反射制造唯一结果的更多相关文章
- .NET面试题系列[6] - 反射
反射 - 定义,实例与优化 在面试中,通常会考察反射的定义(操作元数据),可以用反射做什么(获得程序集及其各个部件),反射有什么使用场景(ORM,序列化,反序列化,值类型比较等).如果答得好,还可能会 ...
- C# 之 反射性能优化2
问题回顾 在上篇博客中,我介绍了优化反射的第一个步骤:用委托调用代替直接反射调用. 然而,那只是反射优化过程的开始,因为新的问题出现了:如何保存大量的委托? 如果我们将委托保存在字典集合中,会发现这种 ...
- 《C#从现象到本质》读书笔记(八)第10章反射
<C#从现象到本质>读书笔记(八)第10章反射 个人感觉,反射其实就是为了能够在程序运行期间动态的加载一个外部的DLL集合,然后通过某种办法找到这个DLL集合中的某个空间下的某个类的某个成 ...
- 深入理解Java String#intern() 内存模型
原文出处: codelog.me 大家知道,Java中string.intern()方法调用会先去字符串常量池中查找相应的字符串,如果字符串不存在,就会在字符串常量池中创建该字符串然后再返回. 字符串 ...
- JVM学习六:JVM之类加载器之双亲委派机制
前面我们知道类加载有系统自带的3种加载器,也有自定义的加载器,那么这些加载器之间的关系是什么,已经在加载类的时候,谁去加载呢?这节,我们将进行讲解. 一.双亲委派机制 JVM的ClassLoader采 ...
- JVM体系结构之七:持久代、元空间(Metaspace) 常量池==了解String类的intern()方法、常量池介绍、常量池从Perm-->Heap
一.intern()定义及使用 相信绝大多数的人不会去用String类的intern方法,打开String类的源码发现这是一个本地方法,定义如下: public native String inter ...
- Java Exception & RTTI
Exception Try { ... ... } catch (Exception ex) { …; throw new Throwable(ex); } catch (Throwable ex) ...
- JAVA RTTI
基础类可接收我们发给派生类的任何消息,因为两者拥有完全一致的接口.我们要做的全部事情就是从派生上溯造型,而且永远不需要回过头来检查对象的准确类型是什么.所有细节都已通过多态性获得了完美的控制. 但经过 ...
- 常见DDoS攻击
导航: 这里将一个案例事项按照流程进行了整合,这样观察起来比较清晰.部分资料来自于Cloudflare 1.DDoS介绍 2.常用DDoS攻击 3.DDoS防护方式以及产品 4.Cloudflare ...
随机推荐
- 本地计算机上的MSSQLSERVER服务启动后又停止了。一些服务自动停止,如果它们没有什么可做的
本地计算机上的MSSQLSERVER服务启动后又停止了.一些服务自动停止,如果它们没有什么可做的 笔者ASP运行环境:操作系统为Windows XP SP2,IIS的版本为默认的5.1,数据库为SQL ...
- c++のdll两种调用方式
调用DLL有两种方法:静态调用和动态调用. (一).静态调用其步骤如下: 1.把你的youApp.DLL拷到你目标工程(需调用youApp.DLL的工程)的Debug目录下; 2.把你的youApp. ...
- Linux 系统裁剪
一.前言 Linux操作系统至1991.10.5号诞生以来,就源其开源性和自由性得到了很多技术大牛的青睐,每个Linux爱好者都为其贡献了自己的一份力,不管是在Linux内核还是开源软件等方面,都为 ...
- SQL高级查询——50句查询(含答案)
-一个题目涉及到的50个Sql语句 --(下面表的结构以给出,自己在数据库中建立表.并且添加相应的数据,数据要全面些. 其中Student表中,SId为学生的ID) ----------------- ...
- C# 加载xml文档文件及加载xml字符串
//创建XmlDocument对象 XmlDocument xmlDoc = new XmlDocument(); //载入xml文件名 xmlDoc.Load(filename); //如果是xml ...
- 如何快速清除.svn文件
Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\清除SVN信息] @=&qu ...
- eclipse中LogCat有时不显示信息的简单解决办法
android的开发中,经常需要使用到LogCat查看打印的信息. 但是eclipse中的LagCat,有时会刷新不出打印的日志. 特别是在点击ClearLog按钮后,经常会出现上面说的这种情况. 一 ...
- Device Tree(一):背景介绍
一.前言 作为一个多年耕耘在linux 2.6.23内核的开发者,各个不同项目中各种不同周边外设驱动的开发以及各种琐碎的.扯皮的俗务占据了大部分的时间.当有机会下载3.14的内核并准备学习的时候,突然 ...
- BZOJ 3434 时空穿梭
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3434 题意: 思路: const int mod=10007; const int N=1 ...
- [转][Unreal3教程]引擎使用操作入门教程
前言 如果你想转载这篇文章,请不要把这篇文章的来源去掉:http://blog.sina.com.cn/zjmjeo 一来是对我辛苦写这篇文章肯定,二来我可以有更多机会和你们这些朋友交流 1.打开引擎 ...