Tester avec différents types de tableaux
Dans les étapes précédentes, nous avons travaillé avec un tableau d'entiers (int[]
). Il est important de comprendre que les concepts de vérification de la valeur null
et de vérification de la propriété .length
s'appliquent aux tableaux de n'importe quel type de données en Java, que ce soit des types primitifs comme int
, double
ou boolean
, ou des types d'objets comme String
ou des classes personnalisées.
Modifions notre programme une fois de plus pour démontrer la vérification de l'état de tableaux de différents types.
Ouvrez le fichier ArrayLengthCheck.java
dans l'éditeur de l'IDE Web.
Remplacez le code existant par le suivant :
public class ArrayLengthCheck {
public static void main(String[] args) {
// Declare a null String array
String[] nullStringArray = null;
// Declare an empty double array
double[] emptyDoubleArray = {};
// Declare a boolean array with elements
boolean[] populatedBooleanArray = {true, false, true};
// Declare a String array with elements
String[] populatedStringArray = {"apple", "banana", "cherry"};
// Use the helper method to check different array types
checkArrayStatus(nullStringArray, "nullStringArray");
checkArrayStatus(emptyDoubleArray, "emptyDoubleArray");
checkArrayStatus(populatedBooleanArray, "populatedBooleanArray");
checkArrayStatus(populatedStringArray, "populatedStringArray");
}
// A generic helper method to check and print the status of an array
// We use Object[] because it can represent an array of any object type
// For primitive types, the check still works on the array reference itself
public static void checkArrayStatus(Object arr, String arrayName) {
System.out.println("Checking " + arrayName + "...");
if (arr == null) {
System.out.println(arrayName + " is null.");
} else if (arr instanceof Object[]) {
// For object arrays, we can cast and check length
Object[] objectArray = (Object[]) arr;
if (objectArray.length == 0) {
System.out.println(arrayName + " is empty.");
} else {
System.out.println(arrayName + " is not empty. Length: " + objectArray.length);
}
} else if (arr.getClass().isArray()) {
// For primitive arrays, we can't cast to Object[], but can still check length
// using reflection or simply rely on the null check and the fact that
// primitive arrays also have a .length property accessible directly
// (though accessing it here would require more complex reflection)
// For simplicity in this example, we'll just indicate it's a non-null, non-empty primitive array
// A more robust check would involve reflection or overloaded methods for each primitive type
try {
int length = java.lang.reflect.Array.getLength(arr);
if (length == 0) {
System.out.println(arrayName + " is empty.");
} else {
System.out.println(arrayName + " is not empty. Length: " + length);
}
} catch (IllegalArgumentException e) {
System.out.println("Could not determine length for " + arrayName);
}
} else {
System.out.println(arrayName + " is not an array.");
}
System.out.println(); // Print a blank line for better readability
}
}
Examinons les modifications :
- Nous avons créé des tableaux de différents types :
String[]
, double[]
et boolean[]
.
- La méthode
checkArrayStatus
prend maintenant Object arr
comme paramètre. Cela lui permet d'accepter des tableaux de n'importe quel type, car tous les tableaux en Java sont des objets.
- À l'intérieur de
checkArrayStatus
, nous vérifions d'abord si arr
est null
.
- S'il n'est pas
null
, nous utilisons instanceof Object[]
pour vérifier s'il s'agit d'un tableau d'objets. Si c'est le cas, nous le castons en Object[]
et vérifions sa propriété .length
.
- Nous ajoutons également une vérification
arr.getClass().isArray()
pour voir si l'objet est un tableau (cela est vrai pour les tableaux d'objets et les tableaux de types primitifs).
- Pour les tableaux de types primitifs, accéder directement à
.length
dans cette méthode générique est difficile sans utiliser la réflexion. Le code fourni utilise java.lang.reflect.Array.getLength(arr)
comme moyen plus général d'obtenir la longueur de n'importe quel type de tableau.
Enregistrez le fichier (Ctrl+S ou Cmd+S).
Ouvrez le terminal dans le répertoire ~/project
.
Compilez le programme Java modifié :
javac ArrayLengthCheck.java
Si la compilation réussit, exécutez le programme :
java ArrayLengthCheck
Vous devriez voir une sortie similaire à celle-ci :
Checking nullStringArray...
nullStringArray is null.
Checking emptyDoubleArray...
emptyDoubleArray is empty.
Checking populatedBooleanArray...
populatedBooleanArray is not empty. Length: 3
Checking populatedStringArray...
populatedStringArray is not empty. Length: 4
Cela démontre que les principes de vérification de la valeur null
et de vérification de la longueur s'appliquent de manière cohérente à différents types de tableaux en Java. Bien que la méthode générique checkArrayStatus
utilisant Object
et la réflexion soit plus complexe, l'idée principale de vérifier d'abord la valeur null
puis la propriété .length
reste la même pour les types de tableaux spécifiques (comme int[]
, String[]
, etc.).