2015-08-13 87 views
0

我有2個類只是稱之爲「東西」和「客戶」,基於我的數據庫表(JDBC)的類,並有抽象類,因爲這兩個類具有相同的幾個屬性(Id,Name) ,我的抽象類包含(Id,Name,以及來自Id和Name變量的setter和getter)。實現不同的數據類型

我創建了2個類(「ExecuteStuff」和「ExecuteCustomer」),它有一個執行查詢的操作數據的查詢,因爲這種情況「ExecuteStuff和ExecuteCustomer」類應該有方法插入,更新,因爲「ExecuteStuff」和「ExecuteCustomer」需要一個相同的方法來處理來自我的數據庫的數據,所以我決定創建一個名爲「myData」的接口,它包含4個mehod (insertData(),updateData(),deleteData()和showData())的類「ExecuteStuff」和類「ExecuteCustomer」。

我的問題是,什麼類型的數據應該用於我的接口「myData」中的方法內的參數,例如= public int insertData(Stuff stuff);此方法將適用於「ExecuteStuff」,但不適用於「ExecuteCustomer」,因爲「ExecuteStuff」和「ExecuteCustomer」具有不同的對象類型。

或者一個優雅的方式來解決這個問題。

+0

我是否理解你對'Stuff'和'Customer'實現接口'myData'?你會在'Customer'實例上調用'insertData()'來將該客戶插入到數據庫中嗎?如果是這樣,爲什麼'insertData()'完全需要參數? – Michelle

+0

聽起來像你應該只是使用JPA或Spring Data。 – chrylis

+0

@Michelle我已經更新了我的問題。爲什麼我需要一個論點?因爲我通過「ExecuteStuff」的「Stuff」類和「ExecuteCustomer」的「Customer」訪問數據。類「Stuff」和「Customer」使我很容易生成必須與另一個屬性混合的數據,例如getTruePrice(),它可以通過乘以getPrice和getValue()來獲得。 – Okem

回答

0

如果我正確理解你,你可以在你的界面中使用通用類型。這樣,傳入參數的數據類型無關緊要。

這裏是一個解釋泛型的鏈接:

https://docs.oracle.com/javase/tutorial/java/generics/types.html

另一種解決方案是使用:

public int insertData(Object obj); 

由於東西和客戶都是對象。

希望我能幫上忙!

0

你可以使用一個通用的參數:

interface MyData { 

public <T> T insertData(T data); 
} 

類的例子:

class MyCustomClassThat implements MyData{ 
    @Override 
    public <T> T insertData(T data) { 

     return data; 
    } 
} 

這使得insertData方法接受任何類。然後,無論你喜歡,你都可以對其進行操作。最後,我們返回最初呈現的對象;以防萬一你在數據對象本身上操作。