Accessing returned object in Loop

I had a quick question, Right now I have a method that returns a populated DTO object, in another class I am calling that method, and then trying to get access to some of the values that are on the returned Object. I am having trouble figuring out what the syntax should be to accomplish this. It is returning "result". I am currently getting an error:

"Null pointer access: The variable result can only be null at this location"

The DTO that I am returning contains a List and I want to get access to one of the values on that list. Below is my code snippet. Thank you for your help!


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);

        }
Jon Skeet
people
quotationmark

It's not clear from your question, but I suspect that this:

rewardServicesImpl.getAccountRewardSummary(request);

should be:

result = rewardServicesImpl.getAccountRewardSummary(request);

If you want to use the value returned from a method, you need to do something with it.

Your code would be clearer if you didn't declare the result variable until you needed it though - and there's no point in using Integer here instead of int. Additionally, unless you really can't reuse the service, you might as well create that once:

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));
}

Also, as noted, the fact that your variable called array clearly isn't an array variable is confusing.

people

See more on this question at Stackoverflow