Olá pessoal.
Estou experimentando o tal do generics, mas não consigo entender o que acontece com esta classe minha:
public class EmptyValidator {
private EmptyValidator() {}
public static <T>void val(T obj, String message) {
if(obj == null || (obj instanceof String) ? "".equals(obj) : false)
throw new EmptyException(message);
}
}
class TestEmptyValidator{
public static void main(String[] args) {
String s = null;
EmptyValidator.<String>val(s, "bla");
}
}
class EmptyException
extends
RuntimeException
{
public EmptyException(String message) {
super(message);
}
}
A idéia dessa classe é ser um utilitário pra facilitar a verificação de se um objeto é nulo (ou vazio, no caso de um String)
Quando executo a classe TestEmptyValidator, esperava que fosse lançada a tal da EmptyException, mas ele não entra no if, como se a condição fosse false.
No que eu estou errando?
=========================================
===================EDIT===================
=========================================
Desculpem. Falta de atenção minha… O problema é no if: precedencia de operadores.
if(obj == null || ((obj instanceof String) ? "".equals(obj) : false))