我是Java的新手,并尝试创建一个小游戏来学习该语言。目前,我有以下问题:我有一个名为“Task”的类,其属性如“taskName”(字符串),“level”(整数),“propability”(Double)等。
我从文本文件中读取了几个任务,并将它们写入从“ArrayList”扩展的类“TaskList”的对象。作为“TaskList”的方法,我想为列表实现排序和过滤算法(例如“删除3级以下的所有任务”)。
我不想为每个属性编写一个过滤方法,而是编写一个能够过滤每个属性的方法,具体取决于输入。
据我所知,这应该可以使用通用或通配符类型,但我不明白如何正确使用它们。
我的方法头目前看起来像这样:
public TaskList removeTasks(String variableName, String variableValue){
在我的想法中,“variableName”应该始终是一个字符串,但“variableValue”可以是几种类型。我想我可以在方法开头使用开关块来确定如何处理“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);
}
}
答案 0 :(得分:0)
使用Object作为value的参数类型,是最简单的。
但是使用泛型,可以消除运行时抛出异常的风险。
public <T> TaskList removeTasks(String variableName, T variableValue){}