Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法调用中的泛型/通配符类型?_Java_Generics - Fatal编程技术网

Java 方法调用中的泛型/通配符类型?

Java 方法调用中的泛型/通配符类型?,java,generics,Java,Generics,我对Java非常陌生,尝试创建一个小游戏来学习Java语言。目前,我有以下问题:我有一个名为Task的类,它具有taskNameString、levelinteger、propability Double等属性 我从一个文本文件中读入几个任务,并将它们写入从ArrayList扩展而来的TaskList类的对象中。作为任务列表的方法,我希望实现列表的排序和过滤算法,例如删除级别3以下的所有任务 我不希望为每个属性编写一个过滤方法,而是希望编写一个能够根据输入过滤每个属性的方法 据我所知,这应该可以

我对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,那么这种方法可能会适得其反。