作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有:
class CustomerActionListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent event)
{
JComboBox cb = (JComboBox)event.getSource();
.. do something
}
}
这导致在 jdk7 中出现以下编译器警告:
JComboBox 是原始类型。对泛型 JComboBox 的引用应该被参数化
我试图将其参数化为:
JComboBox<String> cb = (JComboBox<String>)event.getSource();
但这仍然会留下以下编译器警告:
类型安全:未经检查的从 Object 到 JComboBox 的转换
因此我不确定如何消除编译器警告...
最佳答案
我很欣赏这种方法。它避免了任何类型转换并且易于阅读。
我改进了我的答案,现在它不会给你编译器警告。 JComboBox 的类型现在设置为字符串。要获得选定的项目,您必须通过 ComboBoxModel。
class CustomerActionListener implements ActionListener
{
private JComboBox<String> comboBox;
public CustomerActionListener(JComboBox<String> comboBox){
this.comboBox = comboBox;
}
@Override
public void actionPerformed(ActionEvent event)
{
// Just use the comboBox
ComboBoxModel<String> model = comboBox.getModel();
int index = comboBox.getSelectedIndex();
String choosen = model.getElementAt(index);
System.out.println("Hey you choose "+choosen);
}
}
关于Java Swing - 如何处理 ActionListener 中的泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12738026/
我是一名优秀的程序员,十分优秀!