2016-10-11 10 views
0

Der CodeJava Reflection: Zugriff auf Getter-Methode

import java.beans.* 
for (PropertyDescriptor pd : Introspector.getBeanInfo(Foo.class).getPropertyDescriptors()) { 
    if (pd.getReadMethod() != null && !"class".equals(pd.getName())) 
     System.out.println(pd.getReadMethod().invoke(foo)); 
} 

Dieser Code die Getter der Klasse gibt, aber ich versuche die Getter in der Reihenfolge der Attribute zuzugreifen, wo ich ihre Werte setzen.

Wie kann ich in bestimmten Fällen auf die Getter zugreifen?

+0

Was zu filtern, erwarten Sie? Die JVM garantiert keine spezielle Bestellung. –

+0

@ChrisK Im Fall, wenn ich ID, Name habe, möchte ich getid() und dann getName(). aber der Code oben bietet keine spezifische Reihenfolge –

+0

Haben Sie überlegt, Sortieren, mit einem benutzerdefinierten Komparator? zB https://www.mkyong.com/java/java-object-sorting-example-comparable-and-comparator/ –

Antwort

0

definieren die Klasse, dann in dem Fall erhalten alle Methoden dann einen Strom verwenden, um die Getter nur

public class Pint { 

    private int x; 
    private int y; 
    private int z; 

    public int getX() { 
     return x; 
    } 

    public int getY() { 
     return y; 
    } 

    public int getZ() { 
     return z; 
    } 

und dann

Arrays.stream(p.getClass().getDeclaredMethods()).filter(x -> x.getName().contains("get")).forEach(System.out::println);