2017-05-25 36 views
0

我創建的接口,如:單輸出型的接口功能

public interface InterfaceName { 
    public [Object Type Undecided] functionName(String str1, String str2); 
} 

我會實現這個接口的功能如下:

public class FunctionOne implements InterfaceName { 

    @Override 
    public [Object Type Undecided] functionName(String str1, String st2) { 
     // Code here 
    } 
} 

...

public class FunctionTwo implements InterfaceName { 

    @Override 
    public [Object Type Undecided] functionName(String str1, String st2) { 
     // Code here 
    } 
} 

在FunctionOne中,我希望輸出是一個int,並且在FunctionTwo中,我希望輸出是一個布爾值。在後面的函數中,我希望輸出是一個字符串或其他類型。我應該做什麼類型的輸出「functionName」函數?

+1

的問題是模糊的,但我想你應該讓你的界面通用:'公共接口InterfaceName中【T使用functionName(...)}' –

回答

0

創建具有通用類型的例如接口

public interface InterfaceName<T> { 
     T functionName(..., ...); 
} 
+0

不要爲不相關的泛型參數使用相同的符號。此外,接口返回類型中的''呈現通用接口參數''未使用。此外,僅在返回類型上使該方法具有通用性,這限制了編譯器如何推斷類型。該方法的通用參數化並不需要,它增加的複雜性也是如此。 –

-1

讓我們用generic type 例子:

public interface InterfaceName <T>{ 
    public T functionName(String str1, String str2); 
} 

public class FunctionOne <T> implements InterfaceName <T>{ 

    @Override 
    public T functionName(String str1, String st2) { 
     // Code here 
     return (T)(Integer) 1; 
    } 
} 

public class FunctionTwo <T> implements InterfaceName <T> { 

    @Override 
    public T functionName(String str1, String st2) { 
     // Code here 
     return (T)(Boolean.True); 
    } 
} 
+0

這不會編譯,它表明你還沒有真正理解泛型類型的原理。 –

+0

感謝@JBNizet的幫助,我編輯了錯誤的語法,因爲它現在可以工作 –

+0

現在它編譯了,但是你還沒有理解泛型類型的全部觀點。具有通用列表的要點是能夠具有列表,列表,列表等。您的兩個類是通用的,並且應該返回T,但它們不是。它們返回一個Integer或一個布爾值,如果T不是整數或布爾值,這顯然會導致運行時異常。 –