调用:通过反射调用同一个类型的返回值

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反射制造唯一结果的更多相关文章

  1. .NET面试题系列[6] - 反射

    反射 - 定义,实例与优化 在面试中,通常会考察反射的定义(操作元数据),可以用反射做什么(获得程序集及其各个部件),反射有什么使用场景(ORM,序列化,反序列化,值类型比较等).如果答得好,还可能会 ...

  2. C# 之 反射性能优化2

    问题回顾 在上篇博客中,我介绍了优化反射的第一个步骤:用委托调用代替直接反射调用. 然而,那只是反射优化过程的开始,因为新的问题出现了:如何保存大量的委托? 如果我们将委托保存在字典集合中,会发现这种 ...

  3. 《C#从现象到本质》读书笔记(八)第10章反射

    <C#从现象到本质>读书笔记(八)第10章反射 个人感觉,反射其实就是为了能够在程序运行期间动态的加载一个外部的DLL集合,然后通过某种办法找到这个DLL集合中的某个空间下的某个类的某个成 ...

  4. 深入理解Java String#intern() 内存模型

    原文出处: codelog.me 大家知道,Java中string.intern()方法调用会先去字符串常量池中查找相应的字符串,如果字符串不存在,就会在字符串常量池中创建该字符串然后再返回. 字符串 ...

  5. JVM学习六:JVM之类加载器之双亲委派机制

    前面我们知道类加载有系统自带的3种加载器,也有自定义的加载器,那么这些加载器之间的关系是什么,已经在加载类的时候,谁去加载呢?这节,我们将进行讲解. 一.双亲委派机制 JVM的ClassLoader采 ...

  6. JVM体系结构之七:持久代、元空间(Metaspace) 常量池==了解String类的intern()方法、常量池介绍、常量池从Perm-->Heap

    一.intern()定义及使用 相信绝大多数的人不会去用String类的intern方法,打开String类的源码发现这是一个本地方法,定义如下: public native String inter ...

  7. Java Exception & RTTI

    Exception Try { ... ... } catch (Exception ex) { …; throw new Throwable(ex); } catch (Throwable ex) ...

  8. JAVA RTTI

    基础类可接收我们发给派生类的任何消息,因为两者拥有完全一致的接口.我们要做的全部事情就是从派生上溯造型,而且永远不需要回过头来检查对象的准确类型是什么.所有细节都已通过多态性获得了完美的控制. 但经过 ...

  9. 常见DDoS攻击

    导航: 这里将一个案例事项按照流程进行了整合,这样观察起来比较清晰.部分资料来自于Cloudflare 1.DDoS介绍 2.常用DDoS攻击 3.DDoS防护方式以及产品 4.Cloudflare ...

随机推荐

  1. gcc/g++动态链接库和静态库的链接顺序

    转自:http://withc8212.blog.163.com/blog/static/11656983820109263562854/ so文件:动态库a文件: 静态库exe文件:可执行程序(li ...

  2. 对“Java”的诞生历史、特点、定义等HR常问的简单题

    本人是一个学习Java的新手,在学习了Java以后,对Java的一些总结. 这里共有12点对Java的简单的阐述,如果解释的不怎么样请大家谅解哈. 1.首先我们来看一看,在Java之前的有那些打牌语言 ...

  3. 探索Win32系统之窗口类(转载)

    Window Classes in Win32 摘要 本文主要介绍win32系统里窗口类的运做和使用机制,探索一些细节问题,使win32窗口类的信息更加明朗化. 在本文中,"类", ...

  4. ThreadLocal实现线程范围内共享

    线程范围内共享,即是对相同一段代码,在不同的模块调用时使用一份数据,而在另外一个线程中又使用另外一份数据. ThreadLocal使用set方法为一个新的线程增加一条记录,key是各自的线程,valu ...

  5. (5)Redis几个认识误区

    前几天微博发生了一起大的系统故障,很多技术的朋友都比较关心,其中的原因不会超出James Hamilton在On Designing and Deploying Internet-Scale Serv ...

  6. SQL 数据库的备份,还原,分离和附加以及聚合函数

    数据库备份 数据库备份可以手动备份和语句备份 一.手动备份数据库 1.鼠标右键选择你要进行备份的数据库-任务-备份 可以在常规选项页面你可以选择备份类型是进行完整数据库备份还是差异数据库备份 2.点击 ...

  7. .NetDOM操作--un

    DOM操作操作相关元素:里:children(),find("选择器")外:parent(),parents("选择器")下:next(),nextAll(选择 ...

  8. Android 获取存储空间

    package com.example.getMem; import java.io.File; import android.os.Build;import android.os.Bundle;im ...

  9. How to evaluate a transimpedance amplifier (part 1)

    In this blog, I want take a different approach and describe the technical challenge encountered whil ...

  10. Servlet异常及其生命周期

    Servlet 异常 在javax.servlet包中定义了两个异常类 ServletException类 ServletException类定义了一个通用的异常,可以被init().service( ...