首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >List<List<String>>到ArrayList<List<String>>

List<List<String>>到ArrayList<List<String>>
EN

Stack Overflow用户
提问于 2015-10-25 21:07:10
回答 2查看 1K关注 0票数 1

我很困惑..。我知道我可以把ArrayList of Lists存储在List of Lists上;

我有一个这样的物体:

代码语言:javascript
复制
SemanticTuple< List<String>, List<List<String>> > object;

我可以这么做:

代码语言:javascript
复制
List<List<String>> list = new ArrayList<>();
object = new SemanticTuple<>("name", Arrays.asList(header.split(headerSplitter)), list);

但我不能这么做

代码语言:javascript
复制
object = new SemanticTuple<>("name", Arrays.asList(header.split(headerSplitter)), new ArrayList<>());

为什么它认不出那里的类型?

更新

代码语言:javascript
复制
public class SemanticTuple <HASH, DATA> implements Serializable {

private String name;
private HASH hash;
private DATA Data;

public SemanticTuple() {
}

public SemanticTuple(String name, HASH hash, DATA Data) {
    this.name = name;
    this.hash = hash;
    this.Data = Data;
}
...

对象被声明为来自另一个类的泛型:

代码语言:javascript
复制
public class MeteorologicTask extends Task < LineNumberReader, 
                                         SemanticTuple< List<String>, List<List<String>> >,
                                         SemanticTuple< List<String>, List<List<String>> > >{
...

从..。

代码语言:javascript
复制
public abstract class Task <RESOURCE, INPUT, OUTPUT> implements Callable<OUTPUT>{

protected RESOURCE resource;
protected INPUT input;
protected OUTPUT output;
protected Integer taskID;

public Task() {
}

public Task(RESOURCE resource, Integer taskID) {
    this.resource = resource;
    this.taskID = taskID;
}
...

图片:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-25 21:13:42

您正在尝试创建一个新的ArrayList,而不指定元素类型。您是否尝试过显式地指定它?

代码语言:javascript
复制
SemanticTuple<List<String>, List<List<String>>> object = 
    new SemanticTuple<List<String>, List<List<String>>>(
        "name", 
        Arrays.asList(header.split(headerSplitter)), 
        new ArrayList<List<String>>()
    );

编辑:SemanticTuple的构造函数调用中显式声明泛型类型似乎在Java7中有效。

票数 4
EN

Stack Overflow用户

发布于 2015-10-25 21:20:09

在第一种情况下,推导出包含元素的类型,详细说明赋值的左侧,即List<String>。因此,当您将list作为参数传递时,它的静态类型是明确分配的。在第二条指令中,编译器很可能断言它无法推断包含的类型,这必须在编译时决定。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33335100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档