我需要创建某种响应包装器(在Rest控制器中)。所有映射都应该返回一些必要的字段和特定于每个类的一些字段。
例如,我有一个返回类User对象列表的映射,以及一个返回Account类型对象列表的映射。结果是总是类型的List (我是从JdbcTemplate获得的),因为它可能包含更多的用户/帐户:
public class User {
private String name;
private String jobTitle;
// constructor, getters, setters
}
public class Account {
private String id;
private String type;
// constructor, getters, setters
}我有个包装纸:
public class Wrapper {
public String requestDate;
public String result;
public List<?> resultObject; // should be User or Account
// constructor, getters, setters
}如何使创建这样的包装器实例成为可能:
//suppose I have a List of User objects called myUserList;
Wrapper wrapper = new Wrapper(today, "success", User.class, myUserList);它看起来类似于Spring的BeanPropertyRowMapper<T>,但我无意中实现了这样的功能。
发布于 2017-06-25 16:45:29
我不知道我是否正确地理解了你的问题,但你可以用这种方式使用泛型
public class Wrapper<T> {
public String requestDate;
public String result;
public List<T> resultObject;
// constructor, getters, setters
}正如yuo所看到的,您以“泛型方式”定义了包装器;现在,每次构建包装器实例时,您都可以指定一个类;例如,如果您想要创建一个用户的包装器:
List<User> myUserList = new ArrayList<User>();
Wrapper<User> usrWrap = new Wrapper(today, "success", myUserList);我希望它有用
安杰洛
发布于 2017-06-25 19:54:30
用这样的东西怎么样:
包装抽象类:
public abstract class Wrapper {
public String requestDate;
public String result;
// constructor, getters, setters
}用户包装类:
public class UserWrapper extends Wrapper {
public List<User> resultObject;
// constructor, getters, setters
}帐户包装类:
public class AccountWrapper extends Wrapper {
public List<Account> resultObject;
// constructor, getters, setters
}消费量:
UserWrapper userWrapper = new Wrapper(today, "success", myUserList);
AccountWrapper accountWrapper = new Wrapper(today, "success", myAccountList);
List<Wrapper> wrapperList = Array.asList(userWrapper, accountWrapper);https://stackoverflow.com/questions/44748160
复制相似问题