相关疑难解决方法(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万
查看次数

什么是原始类型,为什么我们不应该使用它?

问题:

  • 什么是Java中的原始类型,为什么我经常听说不应该在新代码中使用它们?
  • 如果我们不能使用原始类型,它有什么替代方案,它是如何更好的?

java generics raw-types

617
推荐指数
13
解决办法
20万
查看次数

什么时候绝对必要的通用数组 - 一个案例

这个Q是寻找一个绝对必要的泛型数组的示例.

泛型和数组"混合不好".

是否存在通用ArrayList不会执行的情况 - 通用数组没有替代品并且必须使用.

有效的Java为通用数组打开了一扇门,表示可能存在需要通用数组的情况.

我一直在使用ArrayList没有任何缺点,也不能想到这样的情况.

TIA.

注意:我见过这些:

以及其他一些讨论.

java arrays generics arraylist

25
推荐指数
2
解决办法
985
查看次数

Java可以在数组中存储方法吗?

好吧,我写了一些代码,我所做的只是循环,但改变了我调用的方法.我尝试使用for循环,所以它有点整洁(出于好奇,看看是否可以完成),但是当我这样做时它不会编译,因为它无法识别一个项目我想,数组作为一种方法.这就是我所拥有的:

String[] moveArray = {moveRight,moveDown,moveLeft,moveUp};
for (i = 0; i < 4; i++) {
    while (myWumpus.moveArray[i]) {
        myWumpus.moveArray[i];
        generator.updateDisplay();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时,我得到了

not a statement myWumpus.moveArray[i]();
';' expected myWumpus.moveArray[i]();
Run Code Online (Sandbox Code Playgroud)

(它指的是while循环中的第一个语句)

所以,我认为这可能是因为我正在使它成为String类型的数组?有类型方法吗?这是可能吗?任何解决方案欢迎:).此外,我可以使用4 while循环来使其工作,因此您无需向我展示该解决方案.谢谢!

java arrays methods

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

代表列表数组

这似乎是一个基本问题,但它确实让我很困惑.我试图表示图的邻接列表.我有两个问题:

public class Graph
{
    private final int V;
    private List<Integer>[] adj;

    public Graph(int V)
    {
        this.V = V;
        this.adj = (List<Integer>[]) new LinkedList[V];  // this works
    }
}
Run Code Online (Sandbox Code Playgroud)

问题1:当我执行以下操作时,它会出错

Array type expected; found: 'java.util.LinkedList<java.lang.Integer>'
this.adj = (List<Integer>[]) new LinkedList<Integer>()[V];
Run Code Online (Sandbox Code Playgroud)

我正在创建一个Integer数组列表,对吧?

问题2:当我这样做时,它再次给出了一个错误,说明通用数组的创建:

this.adj = (List<Integer>[]) new LinkedList<Integer>[V]; 
Run Code Online (Sandbox Code Playgroud)

最后两种方法有什么问题?我认为第一个更正确.

java arrays list

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