简体   繁体   English

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

[英]how do i create a Method that accepts both String[] and Integer[] in java without method overloading?

Let's say you have an integer array and a string array. 假设你有一个整数数组和一个字符串数组。 How can you write a SINGLE method printArray that can print all the elements of both arrays. 如何编写可以打印两个数组的所有元素的SINGLE方法printArray。 The method should be able to accept both integer arrays or string arrays. 该方法应该能够接受整数数组或字符串数​​组。 NOTE.. I cannot use method overloading. 注意..我不能使用方法重载。 Any idea to how to go about this? 知道如何去做这个吗?

You should write a generic method 你应该写一个通用的方法

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());
    }
}

When you call the method you just do printArray(arrayOfIntegers) where arrayOfIntegers is 当你调用方法时,你只需要执行printArray(arrayOfIntegers) ,其中arrayOfIntegers

Integer[] arrayOfIntegers;

The only way I see is 我看到的唯一方法是

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));
    }
}

But it's absolutely ugly. 但这绝对是丑陋的。 You should have two different methods. 你应该有两种不同的方法。

If what you have is an Integer[] (instead of an int[] ), then it's simpler, and OK: 如果您拥有的是Integer[] (而不是int[] ),那么它更简单,并且可以:

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

You can use generics: 你可以使用泛型:

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

You would call it like this: 你会这样称呼它:

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

You can also have a java-8 based solution like this- printAnyArray() is the required method. 你也可以使用像这样的基于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);
 }
}

You can do like this! 你可以这样做!

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

You can use ArrayList with Object 您可以将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));  
            }
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何创建get方法以返回字符串和整数? - How do I create a get method to return both a String and an integer? 如何在Java中将整数方法转换为字符串方法? - How do I convert an integer method into a string method in Java? 如何创建接受可变数量参数的 Java 方法? - How can I create a Java method that accepts a variable number of arguments? 如何创建一个在Java中接受回调函数的方法? - How to create a method that accepts a callback function in java? 使用String和方法重载创建对象 - Create an object with a String and method overloading 如何在Java 8中合并方法重载以为一个方法名称调用不同的参数类型? - How do I incorporate method overloading to call different parameter types for one method name in Java 8? Java:如何创建使用掩码从字节数组中提取整数拆分位的方法 - Java: How do I create a Method to extract an Integer's split bits from a byte array using a mask 如何在不重复整个方法的情况下在 Java 中两次调用字符串方法? - How do I call a string method twice in Java without repeating the whole method? 在Java 8中,如何创建一个接受布尔条件和带有参数作为参数的lambda的方法? - How to create a method that accepts a boolean criteria and a lambda with arguments as a parameter in Java 8? Java - 如何创建接受不同枚举的通用抽象方法? - Java - How to create generic abstract method that accepts different enums?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM