java - 如何在Java中创建一个同时接受String []和Integer []的方法而无需方法重载?
Posted
技术标签:
【中文标题】java - 如何在Java中创建一个同时接受String []和Integer []的方法而无需方法重载?【英文标题】:how do i create a Method that accepts both String[] and Integer[] in java without method overloading? 【发布时间】:2016-01-16 22:10:00 【问题描述】:假设您有一个整数数组和一个字符串数组。如何编写一个可以打印两个数组的所有元素的 SINGLE 方法 printArray。该方法应该能够接受整数数组或字符串数组。注意.. 我不能使用方法重载。知道如何解决这个问题吗?
【问题讨论】:
你不能不传递Object[]
吗?
在这种情况下,您应该始终使用重载方法,而不是在单个方法中传递多种类型的变量
谢谢,我不知道!谢谢帕特里克
是的,我希望我能做到。但我只是在练习一些问题,我遇到了这个问题,它说你不能使用方法重载
【参考方案1】:
我看到的唯一方式是
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 种方法,而且我不能使用方法重载!还是谢谢!【参考方案2】:你应该写一个泛型方法
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;
【讨论】:
哇,完全相同的答案同时出现!太可怕了:P【参考方案3】:你可以使用泛型:
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" );
【讨论】:
【参考方案4】:您也可以使用这样的基于 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);
【讨论】:
【参考方案5】:你可以这样做!
class Printer
public <inputType> void printArray(inputType[] array)
for (inputType elem: array)
System.out.println(elem);
【讨论】:
【参考方案6】:您可以将 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));
【讨论】:
以上是关于java - 如何在Java中创建一个同时接受String []和Integer []的方法而无需方法重载?的主要内容,如果未能解决你的问题,请参考以下文章