Java中的灵活/参数化构造函数
我做Java已经12年了,最近我也在做Javascript,我想知道Java社区是否考虑过某种灵活的构造函数机制 Java中的构造函数可能会让事情变得一团糟。如果有许多不同的路径来创建对象,那么每个路径都需要一个构造函数 如果您可以有一个构造函数,在该构造函数中,您可以输入与类内部字段匹配的任何值:Java中的灵活/参数化构造函数,java,javascript,Java,Javascript,我做Java已经12年了,最近我也在做Javascript,我想知道Java社区是否考虑过某种灵活的构造函数机制 Java中的构造函数可能会让事情变得一团糟。如果有许多不同的路径来创建对象,那么每个路径都需要一个构造函数 如果您可以有一个构造函数,在该构造函数中,您可以输入与类内部字段匹配的任何值: Person p = new Person([ name:’bob’, height:123, address:new Address([ street:’asdf’,
Person p = new Person([
name:’bob’,
height:123,
address:new Address([
street:’asdf’,
postcode:4232
])
]);
(我在这里使用方括号,但您需要一些其他符号,因为这与Java中的数组冲突)
然后定义类中的哪些字段可以在构造函数与注释的组合中使用:
public class Person{
@constructable
private String name;
@constructable
private int height;
@constructable
Private Address address;
.....
}
public class Address {
@constructable
private String street;
@constructable
private String postcode;
@constructable
private String city;
.....
}
这些都是语法上的甜点。在编译期间,编译器将计算出类所需的所有构造函数,并相应地更新类
JSR中有没有提出过类似的建议
这是否打破了Java背后的核心理念?(即,构造器不应如此不受限制)这主要可以通过构造器模式实现。这在创建对象需要大量信息时非常有用。从未见过它。不明白为什么语言会这样做。另一种可能性是Builder模式。AFAIK java8将支持命名方法/构造函数参数。如果是这样,您可以通过反射通过hashmap构造类。这只是简单地说“我希望能够直接将JSON填充到构造函数中”。但为什么要对糟糕的编译静态类型Java执行此操作?继续使用Javascript。因为Java8,它甚至是一种JDK语言。但是还有更多的编码