首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有动态列表类型的Java包装类

具有动态列表类型的Java包装类
EN

Stack Overflow用户
提问于 2017-06-25 16:07:32
回答 2查看 2.7K关注 0票数 0

我需要创建某种响应包装器(在Rest控制器中)。所有映射都应该返回一些必要的字段和特定于每个类的一些字段。

例如,我有一个返回类User对象列表的映射,以及一个返回Account类型对象列表的映射。结果是总是类型的List (我是从JdbcTemplate获得的),因为它可能包含更多的用户/帐户:

代码语言:javascript
复制
public class User {

    private String name;
    private String jobTitle;

    // constructor, getters, setters
}

public class Account {

    private String id;
    private String type;

    // constructor, getters, setters
}

我有个包装纸:

代码语言:javascript
复制
public class Wrapper {
    public String requestDate;
    public String result;
    public List<?> resultObject; // should be User or Account

    // constructor, getters, setters
}

如何使创建这样的包装器实例成为可能:

代码语言:javascript
复制
//suppose I have a List of User objects called myUserList;
Wrapper wrapper = new Wrapper(today, "success", User.class, myUserList);

它看起来类似于Spring的BeanPropertyRowMapper<T>,但我无意中实现了这样的功能。

EN

回答 2

Stack Overflow用户

发布于 2017-06-25 16:45:29

我不知道我是否正确地理解了你的问题,但你可以用这种方式使用泛型

代码语言:javascript
复制
public class Wrapper<T> {
    public String requestDate;
    public String result;
    public List<T> resultObject; 

    // constructor, getters, setters
}

正如yuo所看到的,您以“泛型方式”定义了包装器;现在,每次构建包装器实例时,您都可以指定一个类;例如,如果您想要创建一个用户的包装器:

代码语言:javascript
复制
List<User> myUserList = new ArrayList<User>();
Wrapper<User> usrWrap = new Wrapper(today, "success", myUserList);

我希望它有用

安杰洛

票数 0
EN

Stack Overflow用户

发布于 2017-06-25 19:54:30

用这样的东西怎么样:

包装抽象类:

代码语言:javascript
复制
public abstract class Wrapper {
    public String requestDate;
    public String result;

    // constructor, getters, setters
}

用户包装类:

代码语言:javascript
复制
public class UserWrapper extends Wrapper {

    public List<User> resultObject; 

    // constructor, getters, setters
}

帐户包装类:

代码语言:javascript
复制
public class AccountWrapper extends Wrapper {

    public List<Account> resultObject; 

    // constructor, getters, setters
}

消费量:

代码语言:javascript
复制
UserWrapper userWrapper = new Wrapper(today, "success", myUserList);

AccountWrapper accountWrapper = new Wrapper(today, "success", myAccountList);

List<Wrapper> wrapperList = Array.asList(userWrapper, accountWrapper);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44748160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档