Me gustaría implementar un método que toma un Object
como argumento, lo arroja a un tipo arbitrario, y si eso falla, devuelve null
. Esto es lo que tengo hasta ahora:Java generics
public static void main(String[] args) {
MyClass a, b;
a = Main.<MyClass>staticCast(new String("B"));
}
public static class MyClass {
}
public static <T> T staticCast(Object arg) {
try {
if (arg == null) return null;
T result = (T) arg;
return result;
} catch (Throwable e) {
return null;
}
}
Por desgracia, la excepción de difusión clase no es lanzada/atrapado en el cuerpo de la función staticCast()
. Parece que el compilador de Java genera la función String staticCast(Object arg)
en la que tiene una línea String result = (String) arg;
aunque explícitamente digo que el tipo de plantilla debe ser MyClass
. ¿Alguna ayuda? Gracias.
Por cierto, usted debería estar atrapando g solo ClassCastException, no Throwable. La captura de Throwable puede causar serios problemas. –