首页 > 解决方案 > 来自编译器的未经检查的强制转换警告

问题描述

我正在尝试创建一个游戏。它几乎准备好了,但是当我尝试编译它时,我得到了未经检查的强制转换警告。这是我的代码的开头:

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);
    }

编译器在我写的 valueChanged 方法中给出警告 JList<Configuration> list = (JList<Configuration>) e.getSource();required: JList<Configuration> found: Object. 你能告诉我我的代码的哪一部分不正确以及如何删除该警告。提前致谢。

标签: javaswingcompiler-warningsjlistlistselectionlistener

解决方案


阅读并理解警告。

承认 JVM 无法保护您免受不良强制转换,并负责了解您在做什么。

然后抑制警告:

public void valueChanged(ListSelectionEvent e) {
    @SuppressWarnings("unchecked")
    JList<Configuration> list = (JList<Configuration>) e.getSource();
    ...

推荐阅读