如何在没有方法重载的情况下创建一个接受java中的String []和Integer []的方法?

时间:2015-10-18 15:10:31

标签: java arrays string methods integer

假设你有一个整数数组和一个字符串数组。如何编写可以打印两个数组的所有元素的SINGLE方法printArray。该方法应该能够接受整数数组或字符串数​​组。注意..我不能使用方法重载。知道如何解决这个问题吗?

6 个答案:

答案 0 :(得分:4)

你应该写一个通用的方法

public <T> void printArray(T[] array) {
    //do your printing stuff here; something like this will work
    for ( T elem : array ) {
        System.out.println(elem.toString());
    }
}

当您致电该方法时,您只需执行printArray(arrayOfIntegers) arrayOfIntegers

Integer[] arrayOfIntegers;

答案 1 :(得分:2)

我看到的唯一方法是

public void print(Object o) {
    if (o instanceof String[]) {
        System.out.println(Arrays.toString((String[]) o));
    }
    else if (o instanceof int[]) {
        System.out.println(Arrays.toString((int[]) o));
    }
}

但它绝对是丑陋的。你应该有两种不同的方法。

如果你拥有的是Integer[](而不是int[]),那么它就更简单了,还可以:

public void print(Object[] o) {
    System.out.println(Arrays.toString(o));
}

答案 2 :(得分:1)

您可以使用泛型:

public <T> void printArray(T[] array)
{
    for(T elem : array) System.out.println(elem);
}

你会这样称呼:

printArray(new Integer[] { 1, 2, 3 });
printArray(new String[] { "Hello", "World" });

答案 3 :(得分:1)

您也可以使用基于java-8的解决方案,例如:   printAnyArray()是必需的方法。

public class ArrayPrinter{
  public static void main(String args[]){
    String strArray[]={"a","b"};
    Integer intArray[]={1,2};
    printAnyArray(strArray);
    printAnyArray(intArray);
}

 public static void printAnyArray(Object[] objectArray){
  Arrays.asList(objectArray).forEach(System.out::println);
 }
}

答案 4 :(得分:0)

你可以这样做!

class Printer
{
   public <inputType> void printArray(inputType[] array) 
   {
        for (inputType elem: array) 
        {
            System.out.println(elem);
    }
 }
}

答案 5 :(得分:0)

您可以将ArrayList与Object

一起使用
import java.util.ArrayList;
    class Printer {
        public void printArray(Object[] a) {
            ArrayList<Object> al = new ArrayList<>();
            for (int i = 0; i < a.length; i++) {
                al.add(a[i]);
            }
            for (int i = 0; i < al.size(); i++) {
                System.out.println(al.get(i));  
            }
        }
    }