【发布时间】:2011-10-23 05:44:09
【问题描述】:
可能的重复:
Java Reflection: Getting fields and methods in declaration order
Java. Get declared methods in order they apear in source code
假设我有这门课
可以按顺序使用getter方法吗?
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;
}
}
我已经尝试过了..
for (Method method : ClassA.class.getDeclaredMethods()) {
if (!(method.getReturnType().toString().equals("void"))) {
method.invoke(obj, new Object[0])));
}
}
我从文档中得到这个
...返回的数组中的元素没有排序,也没有任何特定的顺序...
所以.. 就是这样吗?存在一些替代方案还是我只需要实现一些东西?
【问题讨论】:
-
您整理方法的最终目的是什么?
-
我通常看到这些方法按源代码顺序返回方法,但正如您所指出的,规范不保证。如果 JVM 没有按照这个顺序给你,你真的无能为力,除了手动解析
.class文件。 -
您不能使用反射,但是如果您阅读字节码,您可以使用代码中的行号来确定方法的原始顺序。
-
@Peter 有趣。行号之间的简单比较看起来不错。怎么获取字节码?
标签: java reflection