用Java创建构造函数 - 使用“选项”作为参数

时间:2014-01-30 15:09:03

标签: java javascript object parameters constructor

我正在尝试在Java中创建一个以“选项”作为参数的对象。

我对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支持吗?

~~提前致谢

2 个答案:

答案 0 :(得分:0)

不,Java对这些事情更加冗长 - 您的Options类必须预先定义,并且您需要逐个分配每个属性。通常在Java中你有一个Builder。对于这种特殊情况,它看起来相当矫枉过正,但它允许您拥有可以使用构建器配置的不可变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
   }
}

答案 1 :(得分:0)

你正在寻找varargs吗?类似的东西:

public Person(String... args){
   String name = args[0];
   String x = args[1];
}

Person p = new Person("Billy", "testing");