2011-08-09 73 views
5

可能重複:
Java Reflection: Getting fields and methods in declaration order
Java. Get declared methods in order they apear in source code是否可能使用反射getMethods?

假設我有這個類

可能採取干將方法,以便?

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]))); 
    } 
} 

我得到這個從文檔

...在返回數組的元素沒有排序,並且不以任何特定的順序...

所以..就是這樣嗎?存在一些替代或我只需要實現一些東西?

+7

什麼是獲得以該方法的最終目的是什麼? – jzd

+0

我*通常*看到這些方法以源代碼的順序返回的方法,但正如你所指出的那樣**沒有被規範保證。如果JVM沒有按照這個順序給你,那麼除了可能手動解析'.class'文件之外,你無能爲力。 –

+0

http://stackoverflow.com/questions/3148274/java-get-declared-methods-in-order-they-apear-in-source-code –

回答

6

您可以爲每個方法添加您自己的@annotation,其中包含一個數字。然後獲取所有getter方法,並使用自定義分類器對其進行分類,具體取決於使用Collections.sort()傳遞給註釋的數字。

如:

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

@SortedMethod(200) 
public String getNumber() 
{ 
    return number; 
} 
+0

我還沒有測試過!但如果有效,它就是完美的。謝謝! – coffee

相關問題