Как добавить параметры для метода в Java - PullRequest
0 голосов
/ 03 октября 2018

Например, у меня есть класс пользователя

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?

Ответы [ 2 ]

0 голосов
/ 03 октября 2018
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 , поиск по нему.Есть вопросы?

0 голосов
/ 03 октября 2018

Вы можете использовать подход varargs, это можно назвать так:

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



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