带有参数“List <class <?的Java方法extends =“”object =“”>&gt;“</class <?>

时间:2013-07-15 14:54:41

标签: java

我想要一个像这样工作的方法,但我无法访问我传入的对象的属性。我只能调用类方法,如'.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;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

我看到它的方式,列表中没有Class类型。您的列表指定包含而非 OrderChange类的实例

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

答案 1 :(得分:1)

您的代码的问题在于您将通用参数定义为Class<? extends OrderChange>实例,而您可能需要通用类型只是? extends OrderChange

两者之间的区别在于您使用的那个包含对数据结构的引用,该数据结构包含有关该类的信息,例如,由反射使用。

相反,你需要的是一个可以包含OrderChange的任何子类的引用。