在Main中的非泛型类中调用泛型方法

粉红色大象游行

我有一个类GraphSearch,其定义如下:

public class GraphSearch{
///code
}

此类是泛型参数化方法:

public static <T> int dsp(T start, Map<T, List<Pair<T, Integer>>> adjList, T goal) {
///code}

我有一个主要的工具,我会进行此设置并按如下方式调用方法:

GraphSearch g = new GraphSearch();
HashMap<String,ArrayList<Pair<String,Integer>>> k = new  HashMap<String, ArrayList<Pair<String, Integer>>>();
////various setup to fill my map with valid stuff
///Pair is a class I made in my package

然后主要是

System.out.println("dsp from A to E is" + g.dsp("a", k, "e"));

我得到一个错误。

The method dsp(T, Map<T,List<Pair<T,Integer>>>, T) in the type GraphSearch is not applicable for the arguments (String, HashMap<String,ArrayList<Pair<String,Integer>>>, String)

好吧,为什么不呢?ArrayList不是列表吗?字符串不是通用类型吗?哈希图不是地图吗?

这是怎么回事?

格特曼

这里的问题很细微,但这是基于这样的事实,即在Java泛型中,即使不是extend ,aType<A>也不是aType<B>AB在这里,AArrayListBList

您定义了一个HashMap<String,ArrayList<Pair<String,Integer>>>,但是您的方法需要一个Map<String,List<Pair<String,Integer>>>尝试定义kwithList而不是ArrayList,它应该可以工作:

HashMap<String,List<Pair<String,Integer>>> k =
    new HashMap<String, List<Pair<String, Integer>>>();

或定义要使用的dsp方法ArrayList

public static <T> int dsp(T start, Map<T, ArrayList<Pair<T, Integer>>> adjList, T goal) {

此外,即使允许,您也应该dsp通过类的实例访问静态方法为了清楚起见,最好使用类名来访问它:

// GraphSearch.dsp instead of g.dsp.
System.out.println("dsp from A to E is" + GraphSearch.dsp("a", k, "e"));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

非泛型类中的泛型方法

来自分类Dev

C ++:泛型类中的非泛型方法?

来自分类Dev

非泛型类中的泛型方法

来自分类Dev

泛型类中的泛型静态方法

来自分类Dev

泛型方法和泛型类中的类型推断

来自分类Dev

从非泛型静态类中的泛型重载方法获取RuntimeMethodInfo

来自分类Dev

方法必须在非泛型静态类中定义

来自分类Dev

静态非泛型类中的泛型函数?

来自分类Dev

C#在方法调用中扩展泛型类

来自分类Dev

C#在方法调用中扩展泛型类

来自分类Dev

FSharp在基类中调用泛型方法

来自分类Dev

从 Java 中的匿名泛型类调用重载方法

来自分类Dev

在泛型方法中调用重载方法

来自分类Dev

非泛型类的泛型类方法

来自分类Dev

Java中的泛型防止方法的调用

来自分类Dev

在C#中调用泛型方法

来自分类Dev

如何从泛型方法调用非泛型方法

来自分类Dev

从非泛型方法调用泛型方法

来自分类Dev

C ++中的泛型类

来自分类Dev

Java中的泛型类

来自分类Dev

从泛型类调用泛型EventHandler

来自分类Dev

java中泛型类中的非泛型构造函数

来自分类Dev

在泛型类中实例化 Java 泛型类

来自分类Dev

如何将子类分配给非泛型类中的泛型字段

来自分类Dev

嵌套在泛型中的类的泛型使用

来自分类Dev

Typescript-如何推断非调用函数中的泛型?

来自分类Dev

C ++中的泛型方法

来自分类Dev

C ++中的泛型方法

来自分类Dev

方法中的泛型声明