gpt4 book ai didi

java - ActionEvent.getSource : how to cast properly the source Object

转载 作者:行者123 更新时间:2023-12-02 08:48:24 25 4
gpt4 key购买 nike

我担心我可能会在这里犯一个新手错误。我有ActionListener下面,但我收到警告 Unchecked cast: 'java.lang.Object' to 'javax.swing.JComboBox<java.lang.String>'里面if陈述。我该如何解决?我想调用 JComboBox 中的方法API。

<小时/>

我对抑制警告不感兴趣。

public class MyActionListener implements ActionListener {

@Override
public void actionPerformed(ActionEvent actionEvent) {
Object source = actionEvent.getSource();
JComboBox<String> comboBox;
if (source instanceof JComboBox) {
comboBox = (JComboBox<String>) source;
}
}

}

最佳答案

要删除警告而不抑制,您必须与泛型妥协并将代码更改为:

JComboBox<?> comboBox;
if (source instanceof JComboBox) {
comboBox = (JComboBox<?>) source;
}

如果您要使用 JComboBox 中的任何方法它使用通用 <E> ,您可以在那里使用类型转换。例如:

String s = (String) comboBox.getItemAt(0);

说明:

发出警告是因为编译器无法知道您的 JComboBox 是否有效。是 JComboBox<String>JComboBox<Integer> .

类型转换是运行时的事情,Java 中的泛型只是占位符,以确保类型安全并使代码更具可读性。使用类型删除,编译器在生成字节代码时更新/修改所有涉及泛型的语句和转换语句(更多信息 here )。

关于java - ActionEvent.getSource : how to cast properly the source Object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60888430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com