返回接口类型的Java方法

时间:2014-12-06 03:50:19

标签: java

当我阅读有关java界面的内容时,我遇到了以下示例。我知道如何实现一个接口。但是在方法中返回接口类型对我来说是新的。有人可以帮我理解这个例子吗? “Animal”界面中的方法是否可以在“categorizeAnimals”方法中实现?如果是,“animals”数组将被传递到“categorizeAnimals”方法中的所有接口方法?

public class Wild {

  public static interface Animal {
      public List<String> getInvertebrates();
      public List<String> getFishes();
      public List<String> getAmphibians();
      public List<String> getReptiles();
  }


  public static Animal categorizeAnimals(String[] animals) {
    .......
    .......
    .......
    return null;
  }
}

感谢您的回复,非常感谢。

3 个答案:

答案 0 :(得分:0)

对接口的引用可以表示实现该接口的任何类型的值,并且仅表示这些类型的值。

正如其他人所说,你向我们展示的片段似乎有些语无伦次,所以我不会试图解释它 - 让我们试试这个:

如果我们说BearTroutMosquitoAnimal的子类,则返回Animal的函数可以返回任何一个的实例那些类型 - 就像一个以Animal作为参数的函数可以通过该参数接受任何实例。

(这实际上是一个不好的例子 - 熊,鳟鱼和蚊子更可能是实例,其类型是哺乳动物,鱼类和昆虫 - 但你明白了。)

答案 1 :(得分:0)

categorizeAnimals方法的主体中,您的返回类型应该是已实现的类的实例Animal interface

答案 2 :(得分:0)

非常简单的解决方案是,如果你已经将任何接口放入任何方法,那么你要返回的类实例必须要实现该接口。

public class ImplementedClass implements Interfacename {

    @Override
    public void sayhi(String hello) {
        // TODO Auto-generated method stub

    }

    @Override
    public void sayhello() {
        // TODO Auto-generated method stub

    }

    public Interfacename sayhello1() {
        System.out.println("returning new intance of class which is implementing that interface");
        return new ImplementedClass();
    }
}

界面

public interface Interfacename {
    public void sayhi(String hello);

    public void sayhello();

}