[英]generic/wildcard types in method call?
我對Java還是很陌生,因此嘗試創建一個小游戲來學習該語言。 當前,我遇到以下問題:我有一個名為“ Task”的類,具有“ taskName”(String),“ level”(Integer),“ propability”(Double)等屬性。
我從一個文本文件中讀取了幾個任務,並將它們寫入從ArrayList擴展的“ TaskList”類的對象中。 作為“ TaskList”的方法,我想為列表實現排序和過濾算法(例如“刪除3級以下的所有任務”)。
我寧願不為每個單個屬性編寫一個過濾器方法,而是編寫一個能夠根據輸入來過濾每個屬性的方法。
據我所知,這應該可以通過使用通用或通配符類型來實現,但我不知道如何正確使用它們。
我的方法頭現在看起來像這樣:
public TaskList removeTasks(String variableName, String variableValue){
在我的想法中,“ variableName”應始終為字符串,但“ variableValue”可以為幾種類型。 我以為我可以在方法開始時使用switch塊來確定如何處理“ variableValue”。 例如:
switch(variableName)
case "taskName":
[Code]
case "level":
[Code]
[...]
所以目前,我的問題是:怎么說Java,“ variableValue”可以是幾種類型?
如果您還有其他建議解決我的問題,那也可以。 就像我說過的那樣,我對Java並不是很有經驗。
編輯:我嘗試了NimChimpsky提出的語法,並且可以在第一個實例中使用,但是在下面,我遇到了一個新問題。 當我檢查“ variableValue”是否等於當前Task的屬性時,出現“不兼容的操作數類型int和T”錯誤。 我該如何預防?
程式碼片段:
switch(variableName){
case "level":
for (int i = 0; i<size; i++){
currentTask = this.get(i);
if (currentTask.getLevel() == variableValue)
this.remove(i);
}
}
使用Object作為值的參數類型,是最簡單的。
但是,使用Gernerics可以消除運行時強制轉換異常的風險。
public <T> TaskList removeTasks(String variableName, T variableValue){}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.