我正在尝试在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'
});
~~提前致谢
答案 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)
public Person(String... args){
String name = args[0];
String x = args[1];
}
Person p = new Person("Billy", "testing");