这是我想做的事情:
我有这段代码:
Object selectedCreditId = null;
int i = 0;
String selectedCreditName = leasing.getCredit().getDisplayName();
Collection<DCredRating> selectCreditIds = creditData.getItemIds();
for (DCredRating id: selectCreditIds) {
String creditItem = id.getDisplayName();
if (selectedCreditName.equals(creditItem)) {
selectedCreditId = creditData.getIdByIndex(i);
}
i++;
}
我想使用此代码创建函数。该函数将leasing
类和creditData
BeanItemContainer作为参数并返回selectedCreditId
对象。
换句话说,是这样的:
private Object getSelectedCreditId(LeasingResP param, BeanItemContainer<...> param2) {
Object selectedCreditId = null;
int i = 0;
LeasingResP leasing = param;
BeanItemContainer<...> creditData = param2;
String selectedCreditName = leasing.getCredit().getDisplayName();
Collection<...> selectCreditIds = creditData.getItemIds();
for (... id: selectCreditIds) {
String creditItem = id.getDisplayName();
if (selectedCreditName.equals(creditItem)) {
selectedCreditId = creditData.getIdByIndex(i);
}
i++;
}
}
这里的问题是creditData
容器可以属于不同的类。
有什么“漂亮”的方法可以做到这一点,还是我必须为不同的类编写一个if块?
如果您真的对容器中收集的bean的类型不感兴趣,可以声明以下方法:
private Object getSelectedCreditId(LeasingResP param, BeanItemContainer<?> param2) {
...
}
“?” 表示未知类型的容器,因此您只知道它们是类型的bean Object
。
您还可以使该方法通用,以便它返回正确的类型:
private <T extends DCredRating> T getSelectedCreditId(LeasingResP param, BeanItemContainer<? extends T> param2) {
...
}
第二种用法的用法是(一个示例):
LeasingResP param = ...
BeanItemContainer<DCredRating> container = ...
DCredRating dcr = getSelectedCreditId(param, container);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句