Java 为什么';t@TupleConstructor生成构造函数
给我:Java 为什么';t@TupleConstructor生成构造函数,java,groovy,Java,Groovy,给我: class Test { @TupleConstructor(includeFields=true) static class TestObject { private int a = 1; protected int b = 2; public int c = 3; int d = 4; String s = "s"; } static main(args) {
class Test {
@TupleConstructor(includeFields=true)
static class TestObject {
private int a = 1;
protected int b = 2;
public int c = 3;
int d = 4;
String s = "s";
}
static main(args) {
print new TestObject(1, 2, 3, 4, '3')
}
}
它为什么不生成构造函数?如果生成:
Caught: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: in.ksharma.Test$TestObject(java.lang.Integer, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.lang.String)
groovy.lang.GroovyRuntimeException: Could not find matching constructor for: in.ksharma.Test$TestObject(java.lang.Integer, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.lang.String)
at in.ksharma.Test.main(Test.groovy:17)
您将看到@TupleConstructor
生成了以下构造函数:
TestObject.constructors.each {println it}
这里有两个问题
Class.getFields()
的javadoc说明:Field
对象
通过这个类
对象数组中的元素
返回的数据未排序,且未按任何特定顺序排列
public in.ksharma.Test$TestObject(in.ksharma.Test,int,java.lang.String,int,int,int)
public in.ksharma.Test$TestObject(in.ksharma.Test,int,java.lang.String,int,int)
public in.ksharma.Test$TestObject(in.ksharma.Test,int,java.lang.String,int)
public in.ksharma.Test$TestObject(in.ksharma.Test,int,java.lang.String)
public in.ksharma.Test$TestObject(in.ksharma.Test,int)
public in.ksharma.Test$TestObject(in.ksharma.Test)
如果您这样做:
Caught: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: in.ksharma.Test$TestObject(java.lang.Integer, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.lang.String)
groovy.lang.GroovyRuntimeException: Could not find matching constructor for: in.ksharma.Test$TestObject(java.lang.Integer, java.lang.Integer, java.lang.Integer, java.lang.Integer, java.lang.String)
at in.ksharma.Test.main(Test.groovy:17)
您将看到@TupleConstructor
生成了以下构造函数:
TestObject.constructors.each {println it}
这里有两个问题
Class.getFields()
的javadoc说明:Field
对象
通过这个类
对象数组中的元素
返回的数据未排序,且未按任何特定顺序排列
public in.ksharma.Test$TestObject(in.ksharma.Test,int,java.lang.String,int,int,int)
public in.ksharma.Test$TestObject(in.ksharma.Test,int,java.lang.String,int,int)
public in.ksharma.Test$TestObject(in.ksharma.Test,int,java.lang.String,int)
public in.ksharma.Test$TestObject(in.ksharma.Test,int,java.lang.String)
public in.ksharma.Test$TestObject(in.ksharma.Test,int)
public in.ksharma.Test$TestObject(in.ksharma.Test)