从java方法返回两个值

Bee*_*ope 3 java oop coding-style

假设我在java中有一个方法,它在数据库中查找用户并返回他们的地址和他们所在的团队.

我想从方法中返回两个值,并且不希望将方法拆分为两个,因为它涉及数据库调用,并且拆分涉及调用次数的两倍.

鉴于中到大型软件项目的典型问题,最佳选择是什么?

whatGoesHere getUserInfo(String name) {
  // query the DB
}
Run Code Online (Sandbox Code Playgroud)

我知道这个问题与现有的问题有些重复,但是每一个问题都有一些元素使得它与这个例子不同,我认为值得再次提问.

Art*_*ves 9

你有一些选择.最大的OOP将创建一个类来封装这两个属性,就像那样

private class UserInfo {
  private Address address;
  private Team team;
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您想要一个简单的解决方案,您可以返回一个对象数组:

Object[] getUserInfo(String name) {
  // query the DB
  return new Object[]{address,team};
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您想将此方法公开给某个库,您可以使用某些接口来使用这些属性,如下所示:

class APIClass{
  interface UserInfo{
    public Address getAddress();
    public Team getTeam();
  }

  UserInfo getUserInfo(String name) {
    // query the DB
    return new UserInfo(){
         public Address getAddress(){ return address; }
         public Team getTeam(){ return team; }
    };
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果调用者知道要返回什么,您可以将其放在Map <String,Object>中,其中您的键将是Address和Team.这在很大程度上取决于调用者知道要查找哪些键. (2认同)
  • 我认为API方法的`getUserInfo`应该返回`UserInfo`而不是`Object []`. (2认同)