目標:我需要的是創建一個或多個函數來處理List
參數的不同類型,並且我將遍歷函數中的列表。具有通用列表參數的函數? (超載函數)
嘗試:用不同類型的列表
public static int update(List<MyClass> myClasses){};
public static int update(List<Project> rojects){};
public static int update(List<Time> times){};
由於與相同參數類型List
多種功能
1-多種功能但是,這被認爲是在-編譯爲。
2-通用類型的列表,並使用(instanceof
)但是,我沒有完全做到這一點,因爲我不知道如何,以及像我讀的那樣,這似乎是這種行爲的不利方式。
我的問題:實現這種需求的Java方法是什麼?我需要一個乾淨的代碼,我不在乎它是否複雜,我主要關心準確性和正確的編碼。
PS:如果instanceof
的方法正確,那麼請您提供一個關於如何迭代不同類型列表的示例。
感謝提前:)
編輯:不同的對象有相互沒有關係,如,他們不相互延伸也不擴展超類。每個函數的塊都會生成一個SQLite語句,這對每種類型都是不同的。
應對「惡劣的回答是:
所以最後我用你的建議組合,那就是實現與getClassType()
函數返回的類名的字符串一個基類,那麼我會檢查update(List<T> list)
函數中的返回值。
public static <T extends Item> int update(List<T> list){
...
// Loop through the list and call the update function
for (T item: list){
if (item.getClassType() == MyClass.CLASS_TYPE)
update((MyClass) item);
}
...
}
public interface Item {
/**
* @return Return the class type, which is the name of the class
*/
public String getClassType();
}
public class ClassProject implements Item{
public static final String CLASS_TYPE = "ClassProject";
@Override
public String getClassType() {
return CLASS_TYPE;
}
...
}
public class ClassTime implements Item{
public static final String CLASS_TYPE = "ClassTime";
@Override
public String getClassType() {
return CLASS_TYPE;
}
...
}
public class MyClass implements Item{
public static final String CLASS_TYPE = "MyClass";
@Override
public String getClassType() {
return CLASS_TYPE;
}
...
}
這樣做的理由整個interface
是因爲我不喜歡istanceof
並不能確定它的性能和成本,所以我試圖讓我自己的一個。現在是這樣做的一個可怕的方式?
不同類型的處理塊發生了什麼?如果代碼的類型A與類型B的列表相同,或者代碼是通用的,並且不管列表中的基礎類型是否更改。如果有兩種可能的方法,這個答案將決定一個答案。 – cmbaxter
它會根據類型完全不同。該代碼將爲列表中的每個項目創建一個SQLite更新語句,並針對每種類型的項目創建不同的語句。 – LuckyMe