[英]Unchecked cast warning from compiler
我正在尝试创建一个游戏。 它几乎准备好了,但是当我尝试编译它时,我收到了未经检查的强制转换警告。 这是我的代码的开头:
public class GUI extends JFrame implements ListSelectionListener {
private Tiles tiles;
private ConfigurationStore st;
public GUI(ConfigurationStore cs) {
super("My Game");
st = cs;
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(1000,700);
add(ConfigurationsPanel(), BorderLayout.WEST);
}
这是我的配置面板():
private JPanel ConfigurationsPanel() {
JPanel conf = new JPanel(new BorderLayout());
addBorder(conf, "Configurations");
ArrayList<Configuration> configurations = new ArrayList<>();
configurations = store.getConfigurations();
Configuration[] configurationsArray = new Configuration[configurations.size()];
for(int i = 0; i < configurations.size(); i++) {
configurationsArray[i] = configurations.get(i);
}
JList<Configuration> list = new JList<Configuration>(configurationsArray);
list.addListSelectionListener(this);
JScrollPane scrollPane = new JScrollPane(list);
conf.add(scrollPane);
return conf;
}
这是我的 valueChanged 方法:
public void valueChanged(ListSelectionEvent e) {
JList<Configuration> list = (JList<Configuration>) e.getSource();
Configuration configuration = list.getSelectedValue();
tiles = new Tiles(c);
}
编译器在我写JList<Configuration> list = (JList<Configuration>) e.getSource();
通过说: required: JList<Configuration> found: Object
。 您能否告诉我我的代码的哪一部分不正确以及如何删除该警告。 提前致谢。
阅读并理解警告。
承认 JVM 无法保护您免受不良演员的影响,并负责了解您在做什么。
然后抑制警告:
public void valueChanged(ListSelectionEvent e) {
@SuppressWarnings("unchecked")
JList<Configuration> list = (JList<Configuration>) e.getSource();
...
您可以按照安德烈亚斯的回答说@supressWarnings("unchecked")
,也可以检查它。 在你的情况下,可能 suppresswarning 听起来更好。 但在其他情况下,检查类型可能会更好:
public void valueChanged(ListSelectionEvent e) {
JList<?> list = (JList<?>) e.getSource();
Object selectedValue = list.getSelectedValue();
if (selectedValue instanceof Configuration)
{
Configuration configuration = (Configuration) selectedValue;
tiles = new Tiles(c);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.