是否可以使用反射来获取getMethods?

cof*_*fee 5 java reflection

可能的重复:
Java反射:按声明顺序获取字段和方法
Java.获取声明的方法,以便它们在源代码中出现

假设我有这门课

是否可以按顺序采用getters方法?

public class ClassA {

private String name;
private Integer number;
private Boolean bool;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public Integer getNumber() {
    return number;
}

public void setNumber(Integer number) {
    this.number = number;
}

public Boolean getBool() {
    return bool;
}

public void setBool(Boolean bool) {
    this.bool = bool;
}
Run Code Online (Sandbox Code Playgroud)

}

我试过这个..

for (Method method : ClassA.class.getDeclaredMethods()) {
    if (!(method.getReturnType().toString().equals("void"))) {
        method.invoke(obj, new Object[0])));
    }
}
Run Code Online (Sandbox Code Playgroud)

我从文档中得到了这个

...返回的数组中的元素没有排序,也没有任何特定的顺序......

那么......就是这样吗?存在一些替代方案或者我只需要实现一些东西?

Mar*_*aux 6

您可以为每个方法添加自己的@annotation,其中包含一个数字.然后获取所有getter方法,并使用自定义排序器对它们进行排序,具体取决于您使用的传递给注释的数字Collections.sort().

例如:

@SortedMethod(100)
public String getName()
{
    return name;
}

@SortedMethod(200)
public String getNumber()
{
    return number;
}
Run Code Online (Sandbox Code Playgroud)