java - 将自定义类对象传递给 Java 中的泛型类型

标签 java generics

我有一个带有两个泛型类型变量 T 和 E 的类,如下所示:

public class AdjacencyList<T,E> {

        HashMap<T, LinkedList<E>> adj = 
                new HashMap<T, LinkedList<E>>();
        void addToList(T source, E dest){
            if(adj.containsKey(source)){
                LinkedList<E> list = adj.get(source);
                list.add(dest);
            }
            else{
                LinkedList<E> list = new LinkedList<E>();
                list.add(dest);
                adj.put(source, list);
            }
        }
    }

还有一个自定义类,我想将其对象添加到 AdjacencyList 中:

public class GraphVertex<T,E> {
    T name;
    boolean visited;
    ArrayList<GraphVertex<T, E>> neighbors;
    Color color;
}

GraphTraversals 是我想要将 GraphVertex 的对象添加到 AdjacencyList 的类(在方法 createAdjList 中) >)如下:

public class GraphTraversals {

    public static void main(String[] args) {

    AdjacencyList<GraphVertex<T,E>, GraphVertex<T,E>> a = new AdjacencyList<>();

        GraphTraversals g = new GraphTraversals();
        g.createAdjList(a);

    }
    <T,E> void  createAdjList(AdjacencyList<GraphVertex<T,E>, GraphVertex<T,E>> a){

        a.addToList(createAVertex(1), createAVertex(3));
    }
}

但是AdjacencyList的泛型类型不支持GraphVertex的自定义对象。为什么这样 !!我怎样才能实现这个功能?

最佳答案

您对声明有疑问:

AdjacencyList<GraphVertex<T,E>, GraphVertex<T,E>> a = new AdjacencyList<>();

您需要将 T 和 E 替换为具体的类,而不是使用模板参数。

顺便说一句:看看 Map 界面中新的computeIfAbsent-方法...

关于java - 将自定义类对象传递给 Java 中的泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36110518/

相关文章:

java - 如何访问此类中的公共(public)数组

C# 动态字段取决于 "T"类型,没有硬编码

generics - 初学者 : How do I say "any superclass of generic A"

generics - TypeScript:当前类的类型作为类型变量

java - 从 java 运行查询时不使用 oracle 中日期类型列的索引

java - 函数 getEdges 的输入是什么意思?

java - 创建具有两个以上子级的通用树,每个子级可能具有独特的属性

java - 如何删除 hibernate 泛型中未经检查的分配警告

java - 使用扫描仪读取单个字符

java - 使用数组实现缓存 - ArrayIndexOutOfBoundsException (Java)