Java 8 introduce un cambiamento del comportamento per le eccezioni del runtime generate dai metodi java.awt.Component.setFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes) e java.awt.KeyboardFocusManager.setDefaultFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes) quando l'argomento keystrokes contiene oggetti non del tipo AWTKeyStroke.
In Java 8, i metodi generano per questo errore un'eccezione ClassCastException invece di un'eccezione IllegalArgumentException.
Questa regola contrassegna le chiamate ai metodi setFocusTraversalKeys e setDefaultFocusTraversalKeys quando la chiamata del metodo è circondata da un istruzione try con una clausola catch per IllegalArgumentException.
Il seguente esempio mostra il contrassegno di un metodo setFocusTraversalKeys.
public static void testSetFocusTraversal(Component comp, int id, Set keys) {
try { comp.setFocusTraversalKeys (id, keys);} catch (IllegalArgumentException iae) {
...
} }
I metodi setFocusTraversalKeys e setDefaultFocusTraversalKeys continuano a generare un'eccezione IllegalArgumentException per altri motivi come descritto nella documentazione Java. Valutare la logica nel blocco catch per vedere è necessario gestire l'eccezione ClassCastException o un tipo di eccezione di runtime più generica.
Per ulteriori informazioni su queste classi, consultare le seguenti risorse: