【问题标题】:How to add parameters to a method in java如何在java中为方法添加参数
【发布时间】:2018-10-03 18:58:22
【问题描述】:

例如,我有一个用户类

public class User{

public void createInfo(String username, int age, string address){

  JSONObject json = new JSONObject();
  json.put("username", "xxxx");
  json.put("age", 20);
  json.put("address", "xxxxxx");
  System.out.print(json.toJSONString());
  }

public static void main(String[] args) {

     User user = new User();
     user.createInfo("xxxx", 11, 112222);
  }
} 

对于用户名、年龄和地址,它们是该方法的必填字段。现在我想在这个结果中添加一些可选字段。 例如,我想添加一个 phoneNumber 字段。如何做到这一点

user.createInfo("xxxx", 11, 112222).addPhoneNumber(1234566)

那么电话号码会添加到json数据中吗?

【问题讨论】:

  • java中没有可选参数。你必须重载它并调用最后一个并做你需要的额外事情。
  • 你的意思是唯一的方法是 createInfo(String username, int age, string address, int phoneNumber)
  • 是的。然后调用 createInfo() 为您做一些工作,而不是复制代码并做额外的工作。最好将 JSONObject 作为对象的结果返回,这样您就可以轻松创建第二个createInfo(),并且它与其名称更相关。在方法中打印一些东西是不好的。在其他地方打印你想要的,因为也许你不想立即打印一些东西。如果你想添加更多可选参数,也许使用像@AndrewTobilko 这样的技术很好。您也可以使用 Map.of 等新功能来发送参数。
  • 你可以使用builder模式

标签: java parameters parameter-passing


【解决方案1】:
public class User{

  private String username;
  private Integer age;
  private String address;
  private String phone;

  public User addPhoneNumber(String phone){
      this.phone = phone;
      return this;
  }

  public User createInfo(String username, int age, String address){

      this.username =  username;
      this.age = age;
      this.address = address;

      return this;
  }

  public String generateJsonText(){
      JSONObject json = new JSONObject();
      if (username != null) json.put("username", username);
      if (age != null) json.put("age", age);
      if (address != null) json.put("address", address);
      if (phone != null) json.put("phone ", phone );
      return json.toJSONString();
  }

  public static void main(String[] args) {
     User user = new User();
     String json = user.createInfo("xxxx", 11, 112222).addPhoneNumber("1234567").generateJsonText();
  }
} 

BuilderPattern,搜索一下。 有什么问题吗?

【讨论】:

  • 谢谢。这就是我想要的。
  • @HenlenLee 如果你有一个新的可选字段,你需要修改这个构建器(至少,添加一个新的方法和字段)。
  • 我明白了。感谢您的帮助。
【解决方案2】:

您可以使用可变参数方法,这可以这样调用:

myMethod("user", 12, "address", "optional1", "optional2");



public void myMethod(String username, int age, String address, String... foo ) {
     System.out.println(foo[0] + foo[1]);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 2020-03-25
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    • 2016-06-05
    相关资源
    最近更新 更多