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());