我有一个像
这样的课程class A {
private String property1;
private String property2;
private String property3;
// constructor , getters , setters
}
可以按照它们在源文件中出现的顺序获取此类属性名称的列表/数组吗?比如["property1", "property2", "property3"]
答案 0 :(得分:2)
答案是你做不到。您需要的信息在运行时不能从.class文件中获得。
在我的代码的其他部分,我需要按特定顺序“打印”此类的数据。真实案例中的这个类有很多属性并且可以更改(作为顺序)所以,我可以自己编写这个数组/列表来获取我需要的顺序但是如果有可能从类中获取它将是对我来说更好。
以下是解决此问题的更好方法:
您可以对源代码进行一些构建时预处理,以提取属性的顺序,并(比如)将它们写入文件。但坦率地说,我认为分离这些方面会更好;例如这样您的系统集成商/最终用户就可以在不更改源代码的情况下调整属性顺序。
答案 1 :(得分:1)
答案 2 :(得分:1)
这不太准确。 Class#getDeclaredFields
不保证返回字段的顺序。但是,在我刚刚进行的测试中,这些字段确实以其声明顺序返回。