繁体   English   中英

返回接口类型的Java方法

[英]Java method that returns interface type

当我阅读有关Java接口的内容时,遇到了以下示例。 我知道如何实现接口。 但是在方法中返回接口类型对我来说是新的东西。 有人可以帮我理解这个例子吗? “动物”界面中的方法是否将在“ categorizeAnimals”方法中实现? 如果是,“动物”数组是否将传递给“ 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;
  }
}

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

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

正如其他人所说,您显示给我们的片段似乎有点不连贯,因此,我不再尝试解释它了-让我们尝试一下:

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

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

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

一个非常简单的解决方案是,如果您将任何接口放入任何方法中,则返回该类的任何类实例都必须实现该接口。

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();

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM