0

我正在使用列表来检索 bean 类对象的字段的值,在检查列表时看起来像这样

resultList=ArrayList<E>
[0]=UserDetails
firstname=xxxxxx
lastname=xxxxxx
username=xxxxxx
[1]=TaxDetails
earnings=xxxxxx
savings=xxxxxxx
a/c no=xxxxxx
[2]=null;
[3]=null;

现在我的问题是如何检索类字段的值,在使用获取值 resultList.get(i)时,我得到了UserDetailsTaxDetails这不是我的要求。我如何进一步导航以获取其字段?请帮忙!

4

4 回答 4

0

像这样迭代

for (UserDetails object : list) {

 }

或者

  for (int i=0;i<list.size();i++) {
      UserDetails object = list.get(i);     
  }
于 2013-10-24T10:43:09.050 回答
0

尝试这个

String firstname = "",lastname="",username="",earnings="",savings="",ac="";
if(i==0)
{
    firstname = resultList.get(i).firstname;
    lastname = resultList.get(i). lastname;
    username = resultList.get(i). username;
}
else if(i==1)
{
    earnings = resultList.get(i). earnings;
    savings = resultList.get(i). savings;
    ac = resultList.get(i).acno;

}
于 2013-10-24T10:45:02.450 回答
0

我认为您的列表有不同的类型元素,例如 UserDetails、TaxDetails ?第一印象是我认为在同一个集合对象中保留不同的元素不是一个好主意。

解决当前问题

  for (Object obj : resultList) {
      if (obj instanceof UserDetails) {
          UserDetails userDetails = (UserDetails)obj;
          String firstname = userDetails.getFirstName();
          ...
      } else if (obj instanceof UserDetails) {
         .....
      }
  } 

我希望它有帮助

于 2013-10-24T10:57:28.167 回答
0

您需要转换到相关Object才能看到它的成员变量。

一个肮脏的方式就是这样做UserDetails user = (UserDetails)resultList.get(0);

但这是假设您知道UserDetails对象位于位置 0,因此不是最佳实践。

所以你会想做这样的事情(如果你正在遍历列表),它会在进行强制转换之前检查 Object 的类型:

for (Object anObject : resultList){
  if (anObject instanceof UserDetails){
      UserDetails user = (UserDetails)anObject;
      String firstname = user.firstname;
  }else if (anObject instanceof TaxDetails){
      TaxDetails tax = (TaxDetails)anObject;
      String earnings = tax.earnings; 
  }
}

当然,如果您只是访问一个值而不是迭代,您需要这样做:

Object anObject = resultList.get(0);

然后instanceof像上面的循环一样执行比较和转换。

于 2013-10-24T10:56:25.267 回答