如何在java中创建一个既接受String[]又接受Integer[]的方法,而无需方法重载?
假设有一个整数数组和一个字符串数组。如何编写一个方法printArray来打印两个数组的所有元素。该方法应该能够接受整数数组或字符串数组。注。。我不能使用方法重载。你知道怎么做吗?我认为唯一的办法是如何在java中创建一个既接受String[]又接受Integer[]的方法,而无需方法重载?,java,arrays,string,methods,integer,Java,Arrays,String,Methods,Integer,假设有一个整数数组和一个字符串数组。如何编写一个方法printArray来打印两个数组的所有元素。该方法应该能够接受整数数组或字符串数组。注。。我不能使用方法重载。你知道怎么做吗?我认为唯一的办法是 public void print(Object o) { if (o instanceof String[]) { System.out.println(Arrays.toString((String[]) o)); } else if (o instanc
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());
}
}
您可以使用泛型:
public <T> void printArray(T[] array)
{
for(T elem : array) System.out.println(elem);
}
您也可以有这样一个基于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);
}
}
}
类打印机
{
公共void打印数组(inputType[]数组)
{
for(inputType元素:数组)
{
系统输出打印项次(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));
}
}
}
import java.util.ArrayList;
类打印机{
公共void打印数组(对象[]a){
ArrayList al=新的ArrayList();
for(int i=0;i
您不能改为传入一个对象[]
吗?在这种情况下,您应该始终使用重载方法,而不是在一个方法中传递多种类型的变量。谢谢,我不知道!谢谢Patrichyeah我希望我能做到。但我只是在练习一些问题,我遇到了这个问题,它说你不能经常使用方法重载!我希望我也能使用2个方法,但它明确地说我不能使用超过1个方法,我不能使用方法重载!无论如何谢谢你!哇,在同一时间给出了完全相同的答案!那太可怕了:P
class Printer
{
public <inputType> void printArray(inputType[] array)
{
for (inputType elem: array)
{
System.out.println(elem);
}
}
}
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));
}
}
}