0

簡単な質問がありました。現在、入力された DTO オブジェクトを返すメソッドがあり、別のクラスでそのメソッドを呼び出して、返されたオブジェクトにある値のいくつかにアクセスしようとしています。これを達成するための構文を理解するのに苦労しています。「結果」を返すことです。現在、エラーが発生しています:

「ヌル ポインター アクセス: 変数の結果は、この場所でのみヌルにすることができます」

私が返す DTO にはリストが含まれており、そのリストの値の 1 つにアクセスしたいと考えています。以下は私のコードスニペットです。ご協力ありがとうございました!


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

        }
4

1 に答える 1

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明らかに呼び出された変数が配列変数ではないという事実は混乱を招きます。

于 2013-09-30T18:48:00.200 に答える