Ste*_*ier 6 java generics swing java-7
我有:
class CustomerActionListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent event)
{
JComboBox cb = (JComboBox)event.getSource();
.. do something
}
}
Run Code Online (Sandbox Code Playgroud)
这导致jdk7中的以下编译器警告:
JComboBox是原始类型.应参数化对泛型类型JComboBox的引用
我试图将它参数化为:
JComboBox<String> cb = (JComboBox<String>)event.getSource();
Run Code Online (Sandbox Code Playgroud)
但这仍然留下以下编译器警告:
类型安全:未选中从Object转换为JComboBox
因此我不确定如何消除编译器警告......
我很欣赏这种做法。它避免了任何类型转换并且易于阅读。
我改进了我的答案,现在它不会给你编译器警告。JComboBox 的类型现在设置为 String。要获取选定的 Item,您必须通过 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);
}
}
Run Code Online (Sandbox Code Playgroud)