Java – If an elementObject of an ArrayList has a null value in Android, it cannot be checked

If an element of an ArrayList has a null value in Android, it cannot be checked… here is a solution to the problem.

If an element of an ArrayList has a null value in Android, it cannot be checked

I have an ArrayList<Game> my object game consists of Date, Opponent, Score, and other fields that count 10 elements.

Sometimes Score may be null
How do I check it and change it to some default?

I tried the following:

for(Game a : arrList)
{
  if(a.getScore() == null)
  {

} 
} 

Do I need to do if(..) 10x or is there another faster way?

Solution

In your class game, you can set a default value for the score:

class Game{
     private Score score;
     public Score getScore(){     
         return this.score == null? this.score : new Score();      
     }
}

For your reference:
http://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.12.5

Each class variable, instance variable, or array component is
initialized with a default value when it is created (§15.9, §15.10.2):

For type byte, the default value is zero, that is, the value of
(byte) 0.

For type short, the default value is zero, that is, the value of
(short) 0.

For type int, the default value is zero, that is, 0.

For type long, the default value is zero, that is, 0L.

For type float, the default value is positive zero, that is, 0.0f.

For type double, the default value is positive zero, that is, 0.0d.

For type char, the default value is the null character, that is,
‘\u0000’.

For type boolean, the default value is false.

For all reference types (§4.3), the default value is null.

In your class game, you can set a default value for the score:

Edit:

class Game{
     private Score score;
     public Score getScore(){     
         return this.score;      
     }
     public void setScore(Score score){     
         this.score = score;      
     }
     public Score getScoreOrDefault(Score default){
         if(Objects.isNull(this.score)){
              setScore(default);
              return default;
         }
     }
}

After you can call getScoreOrDefault to pass the new score as an argument:

Related Problems and Solutions