我想將一個泛型對象傳入我的方法,並讓它獲得屬性名稱,類型和值。將泛型對象轉換爲泛型類
這裏是我的
public class Login {
public String token;
public String customerid;
public Class1 class1;
public Class2 class2;
public class Class1 {
public Class3 class3;
public String string1;
public class Class3 {
public int int1;
public String string2;
public String string3;
}
}
public class Class2 {
public int int1;
public String string2;
public String string3;
}
}
類,我想輸出看起來像這樣
User Preferences customerid - class java.lang.String - 586969
User Preferences token - class java.lang.String - token1
User Preferences string1 - class java.lang.String - string1Value
User Preferences string2 - class java.lang.String - string2Value
User Preferences string3 - class java.lang.String - string3Value
我現在所擁有的代碼給了我的問題。下面是代碼:
try {
// Loop over all the fields and add the info for each field
for (Field field : obj.getClass().getDeclaredFields()) {
if(!field.isSynthetic()){
field.setAccessible(true);
System.out.println("User Preferences " + field.getName() + " - " + field.getType() + " - " + field.get(obj));
}
}
// For any internal classes, recursively call this method and add the results
// (which will in turn do this for all of that subclass's subclasses)
for (Class<?> subClass : obj.getClass().getDeclaredClasses()) {
Object subObject = subClass.cast(obj); // ISSUE
addUserPreferences(subObject, prefs);
}
}catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}catch(ClassCastException e) {
e.printStackTrace();
}
獲取子對象,在這種情況下Class1
或Class2
,並將它傳遞給該方法具有一個問題就是即時通訊。我已經嘗試了一個類而不是一個對象,但是我無法從類中獲取對象。
有無論如何投射我傳入子類的對象?
感謝
對於第二種情況,我怎麼會叫從註釋'addUserPreferences()''@ UserPreference'?我對註釋不熟悉,所以我有點失落。 – BigT
@BigT它的工作方式是使用反射掃描對象的所有字段。你會檢查每個字段,看它是否有*註釋,例如通過使用['Field.getAnnotation(UserPreference.class)'](http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Field.html#getAnnotation(java.lang.Class中))。如果確實如此,那麼現在您可以爲該字段指定一個「String」名稱,併爲該字段指定一個「Object」值,您可以將其作爲單獨的首選項進行編寫。當然,你仍然通過內部課程遞歸併繼續尋找這些領域,就像你現在正在做的那樣。這是否更有意義? –
@BigT查看我添加的註釋示例。 –