我如何创建一个在 java 中同时接受 String[] 和 Integer[] 而不重载方法的方法?
how do i create a Method that accepts both String[] and Integer[] in java without method overloading?
假设您有一个整数数组和一个字符串数组。您如何编写一个可以打印两个数组的所有元素的 SINGLE 方法 printArray。该方法应该能够接受整数数组或字符串数组。注意.. 我不能使用方法重载。知道如何解决这个问题吗?
我看到的唯一方法是
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));
}
你应该写一个泛型方法
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;
您可以使用泛型:
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" });
你也可以有这样一个基于 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);
}
}
你可以这样做!
class Printer
{
public <inputType> void printArray(inputType[] array)
{
for (inputType elem: array)
{
System.out.println(elem);
}
}
}
您可以将 ArrayList 与对象一起使用
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));
}
}
}
假设您有一个整数数组和一个字符串数组。您如何编写一个可以打印两个数组的所有元素的 SINGLE 方法 printArray。该方法应该能够接受整数数组或字符串数组。注意.. 我不能使用方法重载。知道如何解决这个问题吗?
我看到的唯一方法是
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));
}
你应该写一个泛型方法
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;
您可以使用泛型:
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" });
你也可以有这样一个基于 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);
}
}
你可以这样做!
class Printer
{
public <inputType> void printArray(inputType[] array)
{
for (inputType elem: array)
{
System.out.println(elem);
}
}
}
您可以将 ArrayList 与对象一起使用
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));
}
}
}