接口和参数问题

时间:2015-06-20 10:41:53

标签: java parameters interface

我的界面和参数有问题:

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中。

2 个答案:

答案 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>

的子类型