在 Java 中创建构造函数 - 使用 "Options" 作为参数



我正在尝试在Java中创建一个将"选项"作为param的对象。

我更熟悉JavaScript-这就是我的写作方式。

function Person(options) {
    for (var prop in options) {
        this[prop] = options[prop];
    }
    var registerUser = function() {
        console.log(options.name);
    }
    registerUser();
}
var chris = new Person({
    name: 'Chris',
    age: '23'
});
var molly = new Person({
    name: 'molly',
    age: '41'
});
  • Java是否支持此?

~~预先感谢

您在寻找varargs吗?类似:

public Person(String... args){
   String name = args[0];
   String x = args[1];
}
Person p = new Person("Billy", "testing");

no,Java对这些东西有些详细 - 您的Options类必须是预定的,并且您需要一个一个一个一个。通常在Java,您会有一个建筑商。对于这种特殊情况,它看起来很过分,但是它使您拥有一个不变的Person,可以使用构建器配置。

另一个更骇客的选项是使用反射或apache commons-beanutils的 BeanUtils/ PropertyUtils。因此,您通过Map<String, Object>,然后迭代地图并将每个属性设置为Person对象。

建造者可能看起来像这样:

public class PersonBuilder {
   private String name;
   private int age;
   public PersonBuilder withName(String name) {
      this.name = name;
      return this;
   }
   public PersonBuilder withAge(int age) {
      this.age = age;
      return this;
   }
   public Person build() {
       return new Person(this);
   }
}
public class Person {
   private String age;
   private String name;
   public Person(PersonBuilder builder) {
      //assign properties one by one
   }
}

最新更新