簡體   English   中英

帶有參數“List”的Java方法 <Class<? extends Object> &gt;”

[英]Java Method with the parameter “List<Class<? extends Object>>”

我想要一個像這樣工作的方法,但我無法訪問我傳入的對象的屬性。我只能調用類方法,如'.getFields()','getSuperType()'等。所有對象都是OrderChange的子類有一個rph字段,我需要它們的值。 我該怎么做呢?

private boolean validateOrderChange(List<Class<? extends OrderChange>> input, boolean verifyOnly) {
    for (Class<? extends OrderChange> orderChange : input) {
        if (StringUtil.isNullOrEmpty(orderChange.getRph())) {
            return false;
        }
    }
}

我看到它的方式,你不必Class列表中的類型。 您的列表被指定為包含而不是OrderChange類的實例

private boolean validateOrderChange(List<? extends OrderChange>> input, boolean verifyOnly) {
    for (OrderChange orderChange : input) {
        if (StringUtil.isNullOrEmpty(orderChange.getRph())) {
            return false;
        }
    }
}

代碼的問題在於您將泛型參數定義為Class<? extends OrderChange> Class<? extends OrderChange>實例,而您可能需要簡單的泛型類型? extends OrderChange ? extends OrderChange

兩者之間的區別在於您使用的是對包含有關類的信息的數據結構的引用,例如,反射使用的類。

相反,您需要的是一個可以包含OrderChange任何子類的引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM