相关疑难解决方法(0)

创建一个数组以在Java中存储泛型类型

假设我必须创建一个存储整数ArrayList的数组,数组大小为10.

以下代码将执行此操作:

ArrayList<Integer>[] pl2 = new ArrayList[10]; 
Run Code Online (Sandbox Code Playgroud)

问题1:

在我看来,更合适的代码

ArrayList<Integer>[] pl2 = new ArrayList<Integer>[10];    
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?

问题2:

以下两个编译

  1. ArrayList<Integer>[] pl2 = new ArrayList[10];
  2. ArrayList[] pl3 = new ArrayList[10];

就参考声明而言pl2,pl3有什么区别?

java generics

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

Java Generics数组语法

以下声明指定了哪种数据结构?

 List<ArrayList>[] myArray;
Run Code Online (Sandbox Code Playgroud)

我认为它应该声明一个数组,其中每个元素是一个List(例如,一个LinkedList或一个ArrayList),并要求每个元素List包含ArrayList对象.

我的推理:

 List<String> someList;             // A List of String objects
 List<ArrayList> someList;         // A List of ArrayList objects
 List<ArrayList>[] someListArray;  // An array of List of ArrayList objects
Run Code Online (Sandbox Code Playgroud)

在运行一些测试之后,我确定它接受一个数组,其中每个元素都是一个LinkedList对象,并没有指定LinkedList对象包含的内容.

因此,List<ArrayList>指定List必须包含的内容,但List<ArrayList>[]指定List必须如何实现.

我错过了什么吗?

这是我的测试.

import java.util.ArrayList;
import java.util.List;
import java.util.LinkedList;


public class Generics1 {

    public static void main(String[] args) {

        List<ArrayList>[] someListArray;

        someListArray = getArrayWhereEachElementIsAnArrayListObject();
        // Why does this …
Run Code Online (Sandbox Code Playgroud)

java generics syntax types

16
推荐指数
3
解决办法
4922
查看次数

如何在Java中正确定义链表数组?

我尝试在Java中定义一个链表列表,如下所示,它编译得很好,但它生成了2条警告消息.

 LinkedList<Long> [] hashtable = new LinkedList[10];

warning: [rawtypes] found raw type: LinkedList
    LinkedList<Long> [] hashtable = new LinkedList[10];
                                        ^
  missing type arguments for generic class LinkedList<E>
  where E is a type-variable:
    E extends Object declared in class LinkedList
HashTable.java:13: warning: [unchecked] unchecked conversion
    LinkedList<Long> [] hashtable = new LinkedList[10];
                                    ^
  required: LinkedList<Long>[]
  found:    LinkedList[]
Run Code Online (Sandbox Code Playgroud)

所以,我试过了

 LinkedList<Long> [] hashtable = new LinkedList<Long>[10];
Run Code Online (Sandbox Code Playgroud)

但这次它甚至不会编译并生成此错误.

HashTable.java:13: error: generic array creation
    LinkedList<Long> [] hashtable = new LinkedList<Long>[10];
                                    ^
1 error
Run Code Online (Sandbox Code Playgroud)

那么,我该如何正确定义我的链表数组呢?

java arrays linked-list

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

在Java中未经检查的强制转换警告

Eclipse说:Type safety: Unchecked cast from Object to ObjectArrayList<Car>当我这样做时:

final ObjectArrayList<Car> icars = (ObjectArrayList<Car>) cars[i];
Run Code Online (Sandbox Code Playgroud)

其中cars定义为:

final Object[] cars = new Object[1000];
for (int i = 0; i < 1000; i++) {
    cars[i] = new ObjectArrayList<Car>();
}
Run Code Online (Sandbox Code Playgroud)

Eclipse建议添加@SuppressWarnings("unchecked")icarsobject.但是我已经在某处读过注释在Java中被弃用了,所以我应该保留原样吗?

java warnings casting

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

创建通用列表

如何在Java中创建genric List?我也可以将Class<T>实例传递给方法.

像这样:

public static <T> List<T> createList(Class<T> clazz) {
    List<T> list = new ArrayList<T>();

    list.add(clazz.newInstance());

    return list;
}
Run Code Online (Sandbox Code Playgroud)

java generics type-erasure

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

标签 统计

java ×5

generics ×3

arrays ×1

casting ×1

linked-list ×1

syntax ×1

type-erasure ×1

types ×1

warnings ×1