Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在列表中添加泛型对象_Java_Arrays_List_Generics_Add - Fatal编程技术网

Java 在列表中添加泛型对象

Java 在列表中添加泛型对象,java,arrays,list,generics,add,Java,Arrays,List,Generics,Add,我有这些课 概念 链接、关系(扩展了概念) 概念 链接、关系(应扩展概念) 类概念应该有一个 private List<? extends Concept> list; //or something similar addConcept(Concept c); // that should work with a (Link) for the class Links private List如果我理解正确,链接也是一个概念(扩展概念),因此您可以使用列表来存储链接和概念对象,如

我有这些课

  • 概念
  • 链接、关系(扩展了概念)
  • 概念
  • 链接、关系(应扩展概念)
类概念应该有一个

private List<? extends Concept> list; //or something similar
addConcept(Concept c); // that should work with a (Link) for the class Links

private List如果我理解正确,链接也是一个概念(扩展概念),因此您可以使用列表来存储链接和概念对象,如下代码所示:

public class Concept{
    Concept(String text) {
    }
}

public class Link extends Concept{

    Link(String text) {
        super(text);
    }
}

import java.util.List;
public class Concepts{
    protected List<Concept> list = null;

    Concepts(String text) {
    }
    public void add(Concept test) {
        list.add(test);
    }
}

public class Links extends Concepts{
    Links(String text) {
        super(text);
    }
    public void add(Link test) {
        list.add(test);
    }
}
公共类概念{
概念(字符串文本){
}
}
公共类链接扩展了这个概念{
链接(字符串文本){
超级(文本);
}
}
导入java.util.List;
公共类概念{
受保护列表=空;
概念(字符串文本){
}
公共空间添加(概念测试){
列表。添加(测试);
}
}
公共类链接扩展了概念{
链接(字符串文本){
超级(文本);
}
公共无效添加(链接测试){
列表。添加(测试);
}
}

希望它能帮助你完成你想做的事情。你一定想知道为什么不能将
概念类型的东西添加到你的
列表我的泛型命题中:

public class AbstractConcepts<T extends Concept> {
    private List<T> list = new ArrayList<>();

    public void add(T test) {
        list.add(test);
    }
}

public class Concepts extends AbstractConcepts<Concept> {
    Concepts(String text) {
    }
}

public class Links extends AbstractConcepts<Link> {
}

这不符合我的需要。我想把错误的概念添加到列表中。例如,关系中没有链接,链接中没有关系。
List<? extends Concept> list = new List<Link>();
public class Link2 extends Concept { ... }
Link2 myLink2 = new Link2();
list.add(myLink2);// Big problem, remember that your list was instantiated as a list of Links not Link2s.
public class Concepts<T extends Concept> {
     private List<T> list = new List<T>();

     public void add(T test) {
         list.add(test);
     }
}

public class Links extends Concepts<Link> {
}
public class AbstractConcepts<T extends Concept> {
    private List<T> list = new ArrayList<>();

    public void add(T test) {
        list.add(test);
    }
}

public class Concepts extends AbstractConcepts<Concept> {
    Concepts(String text) {
    }
}

public class Links extends AbstractConcepts<Link> {
}
new Links().add(new Relation());