相关疑难解决方法(0)

如何在Java中创建通用数组?

由于Java泛型的实现,您不能拥有这样的代码:

public class GenSet<E> {
    private E a[];

    public GenSet() {
        a = new E[INITIAL_ARRAY_LENGTH]; // error: generic array creation
    }
}
Run Code Online (Sandbox Code Playgroud)

如何在保持类型安全的同时实现这一点?

我在Java论坛上看到了这样的解决方案:

import java.lang.reflect.Array;

class Stack<T> {
    public Stack(Class<T> clazz, int capacity) {
        array = (T[])Array.newInstance(clazz, capacity);
    }

    private final T[] array;
}
Run Code Online (Sandbox Code Playgroud)

但我真的不知道发生了什么.

java arrays generics reflection instantiation

1045
推荐指数
15
解决办法
74万
查看次数

通用阵列创建

这是我正在使用的代码

public class aClass<T> {

    private T[] elements;

    public aClass(T[] elements) {
        this.elements = elements;
    }

    public void doSomething() {
        T[] newArray = (T[]) new Object[5];
        ...
    }

}
Run Code Online (Sandbox Code Playgroud)

我见过有人说创建像这样的数组是一个坏主意,因为它不是类型安全的.但是,每次我使用它,我都没有问题.何时创建这样的数组会导致问题?

谢谢

java arrays generics

8
推荐指数
1
解决办法
5884
查看次数

java:多维通用数组创建

如何在java中创建通用项的多维数组?

考虑班级:

class A<T>
  {
    T t;
    public A(T t) { this.t = t; }
  }
Run Code Online (Sandbox Code Playgroud)

当我尝试创建一个多维数组时:

A<String>[][] array = new A<String>[2][3];
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

generic array creation
A<String>[][] array = new A<String>[2][3];
                      ^
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

A<String>[][] array = (A<String>[][]) (new Object[2]3]);
Run Code Online (Sandbox Code Playgroud)

但这只是抛出: java.lang.ClassCastException

有什么问题?

(我预计人们会建议使用列表.请解释如何使用数组实现此目的.)

java arrays generics multidimensional-array

7
推荐指数
1
解决办法
5001
查看次数

Java泛型错误

可能重复:
Java如何:通用阵列创建
错误:通用阵列创建

我收到此错误:

Cannot create a generic array of T
Run Code Online (Sandbox Code Playgroud)

这是我的代码(第6行的错误):

1    public class HashTable<T> {
2    
3        private T[] array;
4    
5        HashTable(int initSize) {
6            this.array = new T[initSize];
7        }
8    }
Run Code Online (Sandbox Code Playgroud)

我想知道为什么会出现这个错误,并且是修复它的最佳解决方案.谢谢.

更新:

我调整了我的代码,以便数组代替链接列表,但我收到一个新的错误.

这是我的错误:

Cannot create a generic array of LinkedList<T>
Run Code Online (Sandbox Code Playgroud)

这是我的代码(第六行的错误):

1    public class HashTable<T> {
2    
3        private LinkedList<T>[] array;
4    
5        HashTable(int initSize) {
6            this.array = new LinkedList<T>[initSize];
7        }
8    }
Run Code Online (Sandbox Code Playgroud)

这个错误是出于同样的原因吗?我只是假设我可以创建通用链表并将它们存储在数组中.

java generics

6
推荐指数
2
解决办法
1302
查看次数

我的代码出了什么问题?

当我运行以下代码时:

class MyStack<T>
{
    private T[] stack;
    ... private T top;
    private static final int size=50;

    public MyStack()
    {
      stack = new int[size];
      top = 0;
    } 
}
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

MyStack.java:18: generic array creation

stack = new T[size];
...
1 error
Run Code Online (Sandbox Code Playgroud)

什么应该是正确的代码,所以我不会得到这个错误

java stack

1
推荐指数
1
解决办法
120
查看次数

你能用Java创建一个链表列表吗?

是否可以创建链接列表数组?或链接列表的arraylist?我一直在各地搜索,似乎得到了相互矛盾的答案.我已经看到"没有"的答案表明它无法完成,因为你无法制作一系列可以被解除引用的东西.我已经看到了"是"的答案,说明它可以完成并且它们在那里结束.

提前致谢.

java arrays linked-list

1
推荐指数
1
解决办法
2万
查看次数