java - 二维对象包装 Java

标签 java

我想知道采用哪种方法来创建二维“类似数组”(或数组)的泛型。

  1. 创建列表列表

    LinkedList<LinkedList<T>> myObject;
    
  2. 或者这种方法,更直观,但需要使用Refefcltion来检索类型。

    T[] testArray = c.cast(Array.
            newInstance(c.getComponentType(), dim1, dim2));
    

这个想法是我有一个包含成员变量的类:

public class Board<T>
{
    T[][] array;

    public Board(int vertical_size, int horizontal_size)
    {
        array = new T[vertical_size][horizontal_size]; //which is not allowed because of the way that java implements Generics
    }
}

我应该采用上面列出的两种方法中的哪一种......或者是否有更好的方法来解决这个问题?

最佳答案

您不需要 T[][] - 您可以使用Object[][]同样容易(并在需要时转换为 T)。如果您只允许T,这应该不会造成问题实例来填充数组。

事实上,如果你take a look ,你会发现 ArrayList<T>Object[] 支持(不是 T[] )并使用类似的方法:

111     private transient Object[] elementData;

...

336     @SuppressWarnings("unchecked")
337     E elementData(int index) {
338         return (E) elementData[index];
339     }

我想,如果您不需要动态调整面板大小,这种方法将比列表列表更有效。

关于java - 二维对象包装 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17901066/

相关文章:

java - 文件读取期间无限循环且 String.split() 无法正常工作

java - 如何创建具有扩展权限的 Facebook session

java - 将 JLabel 置于另一个具有图像的 JLabel 之上

java - 如何使 junit 测试在第一次失败测试后停止

java - 使用 JDBC 从 MySQL 数据库中提取数据时如何避免丢失标点符号?

java - IntelliJ IDEA : how to ignore "@see comments" javadoc in method hierarchy?

java - 用于带缓存的流媒体播放器

java - 强制顶部 JPanel 调整大小至其子 JPanel 的高度

java - Android Studio for 循环

java - 如何删除和更新 TreeSet 中的已排序元素?