我的界面和参数有问题:
public class Functions {
public static Double getInfoSum(TreeMap<String, Iinterface> map){
....some counting
}
}
public class ExampleClass {
private TreeMap<String, ExampleClassItem > xxxx;
public static void SomeFunction(){
Functions.getInfoSum(xxxx); //HERE IS ERROR
}
}
public class ExampleClassItem implements Iinterface {
.....
}
除此之外是否还有其他可能性:
private TreeMap<String, ExampleClassItem > xxxx; -----> private TreeMap<String, Iinterface > xxxx;
因为我需要使用ExampleClassItem
,所以有些特定的功能可能不在Interface中。
答案 0 :(得分:4)
您可以更改
public static Double getInfoSum(TreeMap<String, Iinterface> map){
....some counting
}
到
public static Double getInfoSum(TreeMap<String, ? extends Iinterface> map){
....some counting
}
这样您就可以将TreeMap<String, ExampleClassItem>
传递给此方法。
答案 1 :(得分:0)
首先
public static void SomeFunction(){
Functions.getInfoSum(xxxx); //HERE IS ERROR
}
你的&#34; xxxx&#34;不是静态的,并且您的方法是静态的,因此您不能在方法中使用非静态字段。
您可以更改方法并使用&#34;?&#34;通配符
public static Double getInfoSum(TreeMap<String, ? extends Iinterface> map){
所以你可以传递任何扩展Iinterface的东西。
ExampleClassItem是Iinterface的子类型
但是TreeMap<String, ExampleClassItem>
不是TreeMap<String, Iinterface>