【问题标题】:Program uses unchecked or unsafe operations for 2d ArrayList[][]程序对 2d ArrayList[][] 使用未经检查或不安全的操作
【发布时间】:2013-03-19 23:59:59
【问题描述】:

我在大学的任务是制作一个由游乐场组成的游戏板。每个字段都可以包含许多项目。我用这样的数组 arrayList 做到了:

List<String>[][] items = new ArrayList[x][y];

在 Eclipse 中一切正常,但是当我将它上传到 uni 的站点时,它给了我一个错误,我在其他程序中收到了该错误,其中包含其他列表。我在之前的程序中的代码是:

List list = new ArrayList();

我这样修复它:

List<String> list = new List<String>();

但现在情况不同了,因为我不允许写:

List<String>[][] items = new ArrayList<String>[x][y]();

这是我得到的错误:

Note: student/GameImplementation.java uses unchecked or unsafe operations. 
Note: Recompile with -Xlint:unchecked for details

附:如果您知道更优雅的完成任务的方式,请分享。我在想这样的事情:

Board<Fields<Items>> board = new Board();

但不知道如何使它工作。那些东西让我很困惑。

提前致谢。

【问题讨论】:

    标签: java arraylist unsafe unchecked


    【解决方案1】:

    最好的方法绝对是把包含在单个单元格中的数据封装在一个特定的类中:

    class Cell {
      List<String> data;
      OtherData data2;
    }
    
    Cell[][] items;
    

    您在List&lt;String&gt; 中存储了什么?因为使用String 对象并不总是最好的解决方案,尤其是当您有一组有限值时(您可以使用例如enum)。

    【讨论】:

    • 我将项目的名称存储在当前字段中。这些项目是有限的,但每场比赛都会被初始化,并且每场比赛都可能不同。这意味着有 addItem 方法,所以我认为我不能在我的情况下使用枚举。
    • @DanielDimitrov 我在杰克的回答中没有看到任何地方提到的枚举。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    相关资源
    最近更新 更多