Testar com Diferentes Tipos de Array
Nas etapas anteriores, trabalhamos com um array de inteiros (int[]). É importante entender que os conceitos de verificação de null e verificação da propriedade .length se aplicam a arrays de qualquer tipo de dado em Java, sejam tipos primitivos como int, double ou boolean, ou tipos de objeto como String ou classes personalizadas.
Vamos modificar nosso programa mais uma vez para demonstrar a verificação do status de arrays de diferentes tipos.
Abra o arquivo ArrayLengthCheck.java no editor WebIDE.
Substitua o código existente pelo seguinte:
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
}
}
Vamos analisar as mudanças:
- Criamos arrays de diferentes tipos:
String[], double[] e boolean[].
- O método
checkArrayStatus agora recebe Object arr como um parâmetro. Isso permite que ele aceite arrays de qualquer tipo, pois todos os arrays em Java são objetos.
- Dentro de
checkArrayStatus, primeiro verificamos se arr é null.
- Se não for
null, usamos instanceof Object[] para verificar se é um array de objetos. Se for, o convertemos para Object[] e verificamos seu .length.
- Também adicionamos uma verificação
arr.getClass().isArray() para ver se o objeto é um array (isso é verdade tanto para arrays de objetos quanto para arrays primitivos).
- Para arrays primitivos, acessar
.length diretamente dentro deste método genérico é complicado sem reflexão. O código fornecido usa java.lang.reflect.Array.getLength(arr) como uma maneira mais geral de obter o comprimento de qualquer tipo de array.
Salve o arquivo (Ctrl+S ou Cmd+S).
Abra o Terminal no diretório ~/project.
Compile o programa Java modificado:
javac ArrayLengthCheck.java
Se a compilação for bem-sucedida, execute o programa:
java ArrayLengthCheck
Você deve ver uma saída semelhante a esta:
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
Isso demonstra que os princípios de verificação de null e verificação do comprimento se aplicam consistentemente em diferentes tipos de array em Java. Embora o método genérico checkArrayStatus usando Object e reflexão seja mais complexo, a ideia central de verificar null primeiro e depois .length permanece a mesma para tipos de array específicos (como int[], String[], etc.).