在循环中使用getter setter变量

时间:2017-06-30 03:30:38

标签: java for-loop getter-setter

有没有办法将getter方法用作变量,我的意思是在这里我想用变量替换 getDiscountCode()

DataSet pleaseWork = JsonConvert.DeserializeObject<DataSet>(thisIsMyJsonString);
DataTable pleaseWorkAgain = pleaseWork.Tables["predictions"];

类似这样的事情

for (int row=0; row < pOSBean.getItemList().size(); row++) {
   valueDTO = new ValueDTO();
   valueDTO.setRowId(1);
   valueDTO.setValue(pOSBean.getItemList().get(row).getDiscountCode());
   valueListDTO.add(valueDTO);
}

我不能使用'pOSBean.getItemList()。get(row).getDiscountCode()'行作为变量cuz rowid在那里 任何建议PLZ

variable = getDiscountCode();

for (int row=0; row < pOSBean.getItemList().size(); row++) {
   valueDTO = new ValueDTO();
   valueDTO.setRowId(1);
   valueDTO.setValue(pOSBean.getItemList().get(row).+variable);
   valueListDTO.add(valueDTO);
}

2 个答案:

答案 0 :(得分:1)

您可以使用功能界面Function来实现此目的:

Function<Integer, DISCOUNT_CODE> method = (row) -> pOSBean.getItemList().get(row).getDiscountCode(); // Edit DISCOUNT_CODE Type

函数将采用整数(您的行)并返回折扣代码:

valueDTO.setValue(method.apply(row));

您也可以查看enhanced for loop。使用这种类型的循环,您可以使循环更漂亮:

for (Item item : pOSBean.getItemList())
{
    valueDTO = new ValueDTO();
    valueDTO.setRowId(1);
    valueDTO.setValue(item.getDiscountCode());
    valueListDTO.add(valueDTO);
}

答案 1 :(得分:0)

缺少一些重要细节。例如,当您致电valueDTO.setValue(...)时,setValue期望什么类型?任何Object?一个String?一些自定义类?如果它是一个自定义类,是否真的有多个getter可以改变,那将返回该类?

setValue的参数是Object。如果getRow()返回类YourClass的内容,您可以写:

Function<YourClass, Object> getter = YourClass::getDiscountCode;

并将其称为:

valueDTO.setValue(getter.apply(pOSBean.getItemList().get(row)));