设置 AWT 焦点遍历关键字时的异常的行为更改

Java 8 引入了运行时异常的行为更改,当 keystrokes 自变量包含类型不是 AWTKeyStroke 的对象时,java.awt.Component.setFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes)java.awt.KeyboardFocusManager.setDefaultFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes) 方法会抛出这些异常。在 Java 8 中,这些方法将对该错误抛出 ClassCastException 而不是 IllegalArgumentException

当方法调用的两边存在具有 IllegalArgumentExceptioncatch 子句的 try 语句时,此规则会标记对 setFocusTraversalKeyssetDefaultFocusTraversalKeys 方法的调用。

以下示例显示了已标记的 setFocusTraversalKeys 方法。

public static void testSetFocusTraversal(Component comp , int id , Set keys) {

        try { comp.setFocal TraversalKeys (id , keys);} catch (IllegalArgumentException iae) {
            ...
        } }

由于 Java 文档中描述的其他原因,setFocusTraversalKeyssetDefaultFocusTraversalKeys 方法仍会抛出 IllegalArgumentException。请评估 catch 块中的逻辑以查看您是否还需要处理 ClassCastException 或更通用的运行时异常类型。

有关这些类的更多信息,请参阅以下资源: