在Loop中访问返回的对象

时间:2013-09-30 18:45:16

标签: java object return

我有一个简单的问题,现在我有一个方法返回一个填充的DTO对象,在另一个类我调用该方法,然后尝试访问返回的Object上的一些值。我无法弄清楚应该用什么语法来实现这一目标。它正在返回“结果”。我目前收到错误:

“空指针访问:变量结果在此位置只能为空”

我要返回的DTO包含一个List,我希望能够访问该列表中的一个值。以下是我的代码段。谢谢你的帮助!


for (Integer i = 0; i < array.size(); i++) {
        //  System.out.println(array.get(i));

            GetAccountRewardSummaryRequest request = new GetAccountRewardSummaryRequest();
            AccountRewardSummaryDTO result = null;

            request.accountKey =  new AccountIdDTO(array.get(i)); 

            RewardServicesImpl rewardServicesImpl = new RewardServicesImpl();

            rewardServicesImpl.getAccountRewardSummary(request);

            // This will return an AccountRewardSummaryDTO, print out and see if it is returning properly

            System.out.println(result.rewards.get(6));

        //  System.out.println(request.accountKey);

        }

1 个答案:

答案 0 :(得分:2)

从你的问题不清楚,但我怀疑这个:

rewardServicesImpl.getAccountRewardSummary(request);

应该是:

result = rewardServicesImpl.getAccountRewardSummary(request);

如果你想使用方法返回的值,你需要用它来

如果您在需要之前未声明result变量,那么您的代码会更清晰 - 而且使用Integer而不是int没有意义。此外,除非您真的无法重复使用该服务,否则您也可以创建一次

RewardServices service = new RewardServicesImpl();
for (int i = 0; i < array.size(); i++) {
    GetAccountRewardSummaryRequest request = new GetAccountRewardSummaryRequest();
    request.accountKey =  new AccountIdDTO(array.get(i)); 
    AccountRewardSummaryDTO result = service.getAccountRewardSummary(request);
    System.out.println(result.rewards.get(6));
}

另外,如上所述,您的变量array显然不是数组变量的事实令人困惑。