通用方法

时间:2013-01-10 11:45:43

标签: java

我需要向这个泛型方法发送一个整数数组和一个字符串数组,并查明是否存在某个数字或字符串。我写了这段代码,但它在行{{1}上给出错误}说“if(e==30)”。请帮忙。

Incompatible operand types E and int

3 个答案:

答案 0 :(得分:3)

问题在于您不知道eInteger还是String,而您无法将String与{{1}进行比较反之亦然。

一种解决方案是将所需的项目传递给您的方法 - 它可能如下所示:

Integer

在您的主要代码中:

public static <E> void searchArray(E[] inputArray, E soughtItem) {
    for (E e : inputArray) {
        if (e.equals(soughtItem)) {
            System.out.println("Element found in integer array");
        }
    }
}

另请注意,您应使用searchArray(integerArray, 30); searchArray(stringArray, "raj"); 代替equals进行相等测试。

最后,所有这些都是由其他人写的:

==

答案 1 :(得分:1)

有两个错误,必须修复它们:

1)修复它:if(e instanceof Integer && (Integer)e==30) - 您必须检查eInteger的实例

2)String必须使用equals方法进行比较:

else if(e.equals("raj"))

答案 2 :(得分:1)

比较对象时不要使用“==”!更改为“equals()”方法,应该可以使用!

public class Ch2Lu3Ex2
 {
   public static <E> void searchArray(E[] inputArray)
   {
    for(E e : inputArray)
     {
       if(e.equals(30))
         {
          System.out.println("Element found in integer array");
         }
       else if("raj".equals(e)) //This way no null pointer will occure
         {
           System.out.println("Element found in string array");
         }

     }
  } 

 public static void main(String[] args)
  {
       Integer[] integerArray = {10,20,30};
       String[] stringArray = {"robin","raj","ravi"};
       searchArray(integerArray);
       searchArray(stringArray);
    }
  }