gpt4 book ai didi

java - 泛型java的数组搜索

转载 作者:行者123 更新时间:2023-11-30 11:28:18 25 4
gpt4 key购买 nike

我正在尝试搜索任何数据类型(Int、Strings、Chars 等)的数组,以查看是否存在与您输入的元素相匹配的元素。您应该返回匹配元素的索引。使用了两个类。

我得到的错误是:

"Cannot make a static reference to the non-static method find(Object[], Object) from the type ArraySearch"

它的建议是使方法静态化,但是,这样做会在搜索类中出现错误:

"Cannot make a static reference to the non-static type E".

搜索类:

public class ArraySearch<E> {
public int find (E[] array, E item) {
int index = 0;
for (int i = 0; i < array.length; i++) {
if (array[i].equals(item)) {
System.out.println("There is a element " + array[i] +
" at index " + i);
index = i;
break;
}
}
return index;
}
}

运行者等级:

public class ArraySearchRunner {

public static void main(String[] args) {

String[] strings = new String[]{"Jim", "Tim", "Bob", "Greg"};
Integer[] ints = new Integer[]{1, 2, 3, 4, 5};

ArraySearch.find(strings, "Bob");
ArraySearch.find(ints, 4);


}
}

在这种情况下最好的解决方案是什么?

谢谢,

最佳答案

您需要创建类的实例来调用实例方法。像这样:

class Demo {
public void show() { }
}

new Demo().show();

现在,我将实例化您的泛型类留给您。

此外,您的 find() 方法已损坏。如果未找到元素,它将返回 index = 0。这是数组中的有效索引。您应该将 index 初始化为 -1:

int index = -1;

关于你试图使方法静态化,它会给你错误,因为类型参数不适用于类的 static 成员。

来自 Java Generics FAQs - Angelika Langer :

The scope of a class's type parameter is the entire definition of the class, except any static members or static initializers of the class. This means that the type parameters cannot be used in the declaration of static fields or methods or in static nested types or static initializers.

关于java - 泛型java的数组搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18929708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com