java如何封装多个不同的实体

我要传递不同的实体给到页面,如何将多个不同的实体封装成一个实体呢?
例如:
我要封装User和Customer两个实体类:

public class User {
    private String name;
    private String age;
    //..getter,settter省略
}

public class Customer{
    private String name;
    private String money;
    //..getter,settter省略
}

Controller:

@Controller
@RequestMapping("/test")
public class testAPI{
        @RequestMapping("test")
        public List<Object> getList() {
            User user = new User();
            Customer customer = new Customer();
            List<Object> list = new List<Object>();
            list.add(user);
            list.add(customer);
            return list;
        }
}


请问用Object接收可以吗,这样我感觉怪怪的,求指点!!
阅读 6.3k
3 个回答

再封装一层,
类名最好跟业务相关

public class UserAndCustomerVo{

    private User user;
    
    private Customer customer;

    //getter setter method
}
@RequestMapping("test")
public UserAndCustomerVo getSomeInfo() {
    User user = new User();
    Customer customer = new Customer();
    UserAndCustomerVo uacVo = new UserAndCustomerVo();
    uacVo.setUser(user);
    uacVo.setCustomer(customer);

    return uacVo;
}

这样以后业务要扩展还可以继续加

我觉得要简单呢,就用 Map 好了。如果你想传递过去的数据有明确类型,貌似只能自己定义类型或接口了。不过如果是用于转换成 JSON,用 Map 应该比较好。

另外,也可以用匿名类,

class User {
    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }
    private String name;

    public int getAge() {
        return age;
    }
    private int age;
}

class Customer {
    public Customer(String name, double money) {
        this.name = name;
        this.money = money;
    }

    public String getName() {
        return name;
    }
    private String name;

    public double getMoney() {
        return money;
    }
    private double money;
}

public class Test extends Thread {
    public static void main(String[] args) {
        final User _user = new User("James", 30);
        final Customer _customer = new Customer("Andy", 100.00);

        // 匿名类实现组合类型
        Object combine = new Object() {
            {
                this.user = _user;
                this.customer = _customer;
            }

            private User user;
            private Customer customer;

            public User getUser() {
                return user;
            }

            public Customer getCustomer() {
                return customer;
            }

            public String toString() {
                return user.getName() + "|" + customer.getName();
            }
        };

        System.out.println(combine.toString());
    }
}

如果需要明确的接口,可以自定义一个接口,将代码代码中 new Object() { .... } 中那个 Object 替换成你自己的接口——不过写这么麻烦,都可以自己定义个组合类型了。你可以自己研究下自定义 Tuple 泛型(网上貌似也能搜到)。

个人觉得Map接受比较好,Map<String,List<Model>>,几个bean类就几个list放到Map中

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题