Je voudrais implémenter une méthode qui prend un Object
comme argument, le convertit en un type arbitraire, et si cela échoue, retourne null
. Voici ce que j'ai jusqu'à présent:Génériques Java
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;
}
}
Malheureusement, l'exception de fonte de classe est jamais jeté/pris dans le corps de la fonction staticCast()
. Il semble que le compilateur Java génère la fonction String staticCast(Object arg)
dans laquelle vous avez une ligne String result = (String) arg;
même si je dis explicitement que le type de modèle doit être MyClass
. De l'aide? Merci.
Par ailleurs, vous devriez être catchin g uniquement ClassCastException, non Throwable. Catching Throwable peut causer de sérieux problèmes. –