2014-12-06 134 views
1

在阅读关于java接口时,我遇到了以下示例。我知道如何实现一个接口。但是在方法中返回接口类型对我而言是新事物。有人能帮我理解这个例子吗? “动物”界面中的方法是否会在“categorizeAnimals”方法中实现?如果是的话,“动物”数组将被传递到“categorizeAnimals”方法中的所有接口方法?返回接口类型的Java方法

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; 
    } 
} 

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

+2

http://stackoverflow.com/questions/5699427/what-does-it-mean-for-a-function-to-return-an-interface – 2014-12-06 03:52:16

+0

我我不清楚问题是什么。返回一个接口的实现是非常非常普遍的。 – 2014-12-06 04:03:46

+0

@ramanrayat,感谢您的链接。伙计们,我是这个界面概念的新手。试图理解。所以我问的可能听起来很愚蠢。 – danpakku 2014-12-06 04:16:12

回答

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

} 
+1

@Krisha,谢谢 – danpakku 2014-12-06 19:48:51

+0

@danpakku我很高兴这个答案帮了你。我的荣幸 :) – Krishna 2014-12-08 05:49:04

0

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

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

如果说BearTrout,和MosquitoAnimal的子类,返回Animal的函数可以返回任何这些类型的实例 - 就像一个将Animal作为参数的函数可以通过该参数接受任何这些实例一样。

(其实,这是一个坏榜样 - 熊,鳟鱼和蚊子更有可能这样的情况,同类型是一样的东西哺乳动物,鱼类和昆虫 - 但你的想法)

+0

感谢您的帮助... – danpakku 2014-12-06 19:53:31

0

体内categorizeAnimals方法您的返回类型应该是已经实现Animal接口

+1

@Farhang_Amary,谢谢 – danpakku 2014-12-06 19:50:28