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