我試圖獲取一個類(objectfactory.java
)的所有數據對象(變量單獨,而不是其功能),並且調用方法本身就是在同一個包中創建其他類的實例,並且以這種方式列出給定包中所有類中的所有對象。 (把事情放在角度看,這些是由JAXB創建的類)。如何使用Java遍歷類的對象及其成員類
也就是說,我基本上想要做的是,通過迭代,使的所有數據對象的列表:
Objectfactory, and then,
- Person
- Name
- Url
- Link
- Personnel
類。
這裏是ObjectFactory類:
@XmlRegistry
public class ObjectFactory {
private final static QName _Given_QNAME = new QName("", "given");
private final static QName _Email_QNAME = new QName("", "email");
private final static QName _Family_QNAME = new QName("", "family");
/**
* Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: schema
*
*/
public ObjectFactory() {
}
public Person createPerson() {
return new Person();
}
public Name createName() {
return new Name();
}
public Url createUrl() {
return new Url();
}
public Link createLink() {
return new Link();
}
public Personnel createPersonnel() {
return new Personnel();
}
@XmlElementDecl(namespace = "", name = "given")
public JAXBElement<String> createGiven(String value) {
return new JAXBElement<String>(_Given_QNAME, String.class, null, value);
}
@XmlElementDecl(namespace = "", name = "email")
public JAXBElement<String> createEmail(String value) {
return new JAXBElement<String>(_Email_QNAME, String.class, null, value);
}
@XmlElementDecl(namespace = "", name = "family")
public JAXBElement<String> createFamily(String value) {
return new JAXBElement<String>(_Family_QNAME, String.class, null, value);
}
}
我可以去直接只有等到使用Java反思ObjectFactory的字段和方法(getDeclaredFields())等
但是,對於其他類,我只能手動到達他們的對象。 (對於例如,對於班通)
ObjectFactory factory= new ObjectFactory();
Field[] fields = factory.createLink().getClass().getDeclaredFields();
Field[] fields1 = factory.createPerson().getClass().getDeclaredFields();
for (Field f1 : fields1) {
System.out.println("field name = " + f1.getName());
}
,但是,我想在ObjectFactory的所有課程做到這一點在運行時,而不是手動撥打電話就像「createPerson()」。
我試着做這樣的事情;
ObjectFactory factory= new ObjectFactory();
Method[] methods = factory.getClass().getDeclaredMethods();
for (Method m : methods) {
System.out.println("Class name = " + m.getName());
Field[] subfields = m.getClass().getDeclaredFields();
for (Field sf : subfields) {
System.out.println("entities = " + sf.getName());
}
System.out.println("\n\n");
}
但這不起作用。
我的預期產出將是這樣的:
Class name = ObjectFactory
field name = _Given_QNAME
field name = _Email_QNAME
field name = _Family_QNAME
Class name = Person
field name = Name
field name = Age
field name = Sex
Class name = Personnel
field name = address
...
等..
我該怎麼辦呢?
感謝您的代碼!它像一個魅力一樣工作! :-) – VictorCreator
@Vijairam:很高興能幫到你! – xyz