【发布时间】:2015-10-25 21:07:10
【问题描述】:
我很困惑...我知道我可以将 ArrayList 的 Lists 存储在 List 的 Lists 上;
我有一个这样的对象:
SemanticTuple< List<String>, List<List<String>> > object;
我可以这样做:
List<List<String>> list = new ArrayList<>();
object = new SemanticTuple<>("name", Arrays.asList(header.split(headerSplitter)), list);
但我不能这样做:
object = new SemanticTuple<>("name", Arrays.asList(header.split(headerSplitter)), new ArrayList<>());
为什么不能识别那里的类型?
更新
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;
}
...
对象被另一个类声明为泛型:
public class MeteorologicTask extends Task < LineNumberReader,
SemanticTuple< List<String>, List<List<String>> >,
SemanticTuple< List<String>, List<List<String>> > >{
...
来自...
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;
}
...
一张图片:
【问题讨论】:
-
试试 new ArrayList
- >()... 我认为你必须定义对象的类型。在第一个示例中,它是隐式完成的
-
@YassinHajaj 不,仍然是错误的类型。
-
让我们等待答案而不是:)
-
没有足够的信息来回答这个问题。我们需要知道 a)
SemanticTuple是如何声明的,b)SemanticTuple的构造函数是如何声明的,c)object是如何声明的,d) 你使用的是什么版本的 Java(Java 8 有更好的类型推理)。 -
是的...对于 Java 8 的粗略示例,这似乎很好。我怀疑您使用的是 Java 7,对吧? (我的粗略示例无法在 Java 7 上编译。)