2014-12-06 131 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