Java 方法调用中的泛型/通配符类型?
我对Java非常陌生,尝试创建一个小游戏来学习Java语言。目前,我有以下问题:我有一个名为Task的类,它具有taskNameString、levelinteger、propability Double等属性 我从一个文本文件中读入几个任务,并将它们写入从ArrayList扩展而来的TaskList类的对象中。作为任务列表的方法,我希望实现列表的排序和过滤算法,例如删除级别3以下的所有任务 我不希望为每个属性编写一个过滤方法,而是希望编写一个能够根据输入过滤每个属性的方法 据我所知,这应该可以通过使用泛型或通配符类型实现,但我不知道如何正确使用它们 我的方法头现在看起来像这样:Java 方法调用中的泛型/通配符类型?,java,generics,Java,Generics,我对Java非常陌生,尝试创建一个小游戏来学习Java语言。目前,我有以下问题:我有一个名为Task的类,它具有taskNameString、levelinteger、propability Double等属性 我从一个文本文件中读入几个任务,并将它们写入从ArrayList扩展而来的TaskList类的对象中。作为任务列表的方法,我希望实现列表的排序和过滤算法,例如删除级别3以下的所有任务 我不希望为每个属性编写一个过滤方法,而是希望编写一个能够根据输入过滤每个属性的方法 据我所知,这应该可以
public TaskList removeTasks(String variableName, String variableValue){
在我看来,variableName应该始终是字符串,但variableValue可以有几种类型。我想我可以在方法开始时使用开关块来确定如何处理variableValue。例如:
switch(variableName)
case "taskName":
[Code]
case "level":
[Code]
[...]
所以目前,我的问题是:如何说Java变量值可以有几种类型
如果你有其他建议如何解决我的问题,也可以。正如我所说,我对Java不是很有经验
编辑:我尝试了尼姆斯基提出的语法,它在第一个实例中是有效的,但在下面,我遇到了一个新问题。当我检查variableValue是否等于当前任务的属性时,我得到一个不兼容的操作数类型int和T错误。我怎样才能防止呢
代码段:
switch(variableName){
case "level":
for (int i = 0; i<size; i++){
currentTask = this.get(i);
if (currentTask.getLevel() == variableValue)
this.remove(i);
}
}
使用对象作为值的参数类型,是最简单的 但是使用gernerics可以消除运行时强制转换异常的风险
public <T> TaskList removeTasks(String variableName, T variableValue){}
听起来枚举可能会起作用,关于Java有很多东西需要学习。我担心,如果您的目标是在能够将Java用于现实世界的意义上学习Java,那么这种方法可能会适得其反。