我已經創建了一個函數通用方法調用混亂
public <T> void someFunction(T object) {
object.someMethod();
}
我有具有相同的someMethod()函數定義兩個類。我必須通過傳遞參數來調用函數,這兩個類的對象取決於提供的輸入。
我已經創建了一個函數通用方法調用混亂
public <T> void someFunction(T object) {
object.someMethod();
}
我有具有相同的someMethod()函數定義兩個類。我必須通過傳遞參數來調用函數,這兩個類的對象取決於提供的輸入。
由於T
沒有類型邊界,因此編譯器無法知道該參數是否被具有someMethod
方法的類替換。
添加類型限制:有someMethod
實現該接口
pubic <T extends HasSomeMethod> void someFunction(T object) {
object.someMethod();
}
哪裏HasSomeMethod
是包含someMethod
方法的接口,和兩個班。 (它也將工作,如果HasSomeMethod
是一個超一流的兩類,並且它包含someMethod
方法(無論是抽象的或沒有)
編輯:
包裝的PreparedStatement的一個例子:
public class MyStatement implements HasSomeMethod
{
PreparedStatement stmt;
public MyStatement (PreparedStatement stmt) {
this.stmt = stmt;
}
public void someMethod()
{
stmt.someMethod();
}
}
現在,如果你有一個PreparedStatement
比如,你可以寫:
PreparedStatement ps = ...
MyStatement my = new MyStatement(ps);
,並通過my
到您的someFunction
方法。
一個對象是java庫類和另一個用戶定義的類。所以第一個類是一個編譯代碼。那麼我們如何才能爲這兩個類實現相同的接口 –
@AkhilSudhakaran也許你可以用實現接口的第二個用戶定義的類來包裝庫類。你能否詳細解釋一下 – Eran
。我只是一個初學者。用例如PreparedStatement構建的類和MyStatement作爲用戶定義的類 –
什麼問題;你有什麼問題? –
我必須根據提供的輸入值調用兩個類的函數。一個類是內置的,另一個是用戶定義的一個 –