【问题标题】:Generics in Java - Creating a Generic MethodJava 中的泛型 - 创建泛型方法
【发布时间】:2021-02-18 07:33:12
【问题描述】:

我想尝试创建一个通用方法,它接受一个数组、数组的长度和一个返回数组中元素位置的元素。我是 Java 新手,正在努力学习泛型。

我似乎无法获得元素的位置,我什至不知道我这样做是否正确,任何建议都会很棒。

public class GenericsProj {

    public static void main(String[] args) {
        Integer[] intArray = {1, 2, 3, 4};
        String[] stringArray = {"one", "two", "three", "four"};

        routineArray(intArray, intArray.length, 4);
        routineArray(stringArray, stringArray.length, "four");
    }


    public static <T> void routineArray(T[] array, T length, T element) {
        System.out.println("Inside the array: " + Arrays.toString(array));
        
        for (int i = 0; i < array.length; i++) {
            if (array[i] == element) {
                pos = array[i];
                System.out.println(pos);
            }
        }
    }
}

【问题讨论】:

  • 你不应该使用T类型的length,长度总是int,同样的位置,永远是int
  • 除此之外你还会遇到stackoverflow.com/questions/513832/…
  • 无论如何你都不需要length 参数或pos(而且你还没有声明pos)。如果你想要元素的索引,打印i 而不是array[i]。此外,在比较字符串和其他对象时,请使用 .equals 而不是 ==
  • 天哪,你们都是救生员,谢谢!!现在我将尝试创建一个大于方法来比较两个对象,AHH。

标签: java arrays generics


【解决方案1】:

如果你想打印出数组的位置,你必须将array[i] 更改为i,array[i] 意味着你得到了arraylist 的值,其中包括i 的索引。并且您必须提及 pos 变量的类型。代码如下所示。

if (array[i] == element) {
            int pos = i;
            System.out.println(pos);
        }

【讨论】:

    【解决方案2】:

    现在routineArray 打印每次出现的输入中的元素(如果元素在数组列表中),如果要返回元素的位置,则需要使用pos = i 而不是pos = array[i]。在这种情况下,您可以将方法的返回类型从 T 更改为 int。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多