我有一个家庭作业任务,我只需要编写 1 个方法(类 MainClass 的成员(,它同时创建多种类型的数组 - 只使用此方法。我试图创建一个返回相应类型的方法,但它只能用一种类型的数组来完成(请参阅注释的代码/function/(。我的问题是我如何创建一个模板化函数,它一次返回所有类型,我的 attemp 在下面,/但遗憾的是不起作用/?
import java.lang.reflect.Array;
import java.sql.SQLOutput;
import java.util.Arrays;
public class MainClass {
//ще направим отделни методи за класовете
/*public int [] returnArr(){
int [] ar = new int[10];
return ar;
}*/
public void createArray(){
//here I create more than one type of array:
int []ar = new int[10];
String[] str = new String[10];
double [] dbl = new double[10];
}
}
class Test{
public static void main(String[] args) {
MainClass mcl = new MainClass();
/*int [] ia = mcl.returnArr();
for (int i = 0;i<10;i++){
Arrays.fill(ia,0,9,8);
}*/
mcl.createArray();
//here the ar[] array is not accessible
Arrays.fill(ar,0,9,0);
for (int i:ar){
System.out.println(i);
}
}
}
我希望你正在练习OOP。在Java中,一个方法不可能返回多个类型。您已经提到,您需要使用一种方法创建多种类型的数组。您可以在此处使用2种方法。
-
面向对象的方式 - 使用实例变量并在一种方法中初始化它们。它将如下所示
公共类 主类 {
private int[] intArray; private String[] strArray; private double[] dblArray; public void createArray() { this.intArray = new int[10]; this.strArray = new String[10]; this.dblArray = new double[10]; }
}
然后你可以使用一些 getter 方法来访问数组。
- 返回数组数组
- - 可以将多个值作为复合类型数组返回。例如
java.lang.Object
数组。由于Object
是 Java 中所有内容的父类,因此 Object 数组可以包含任何类型。那么你的方法看起来像
public Object[] createArray() { int[] intArray = new int[10]; String[] strArray = new String[10]; double[] dblArray = new double[10]; Object[] returnArray = new Object[] { this.intArray, this.strArray, this.dblArray }; return returnArray; }
现在在返回的对象数组中
Object[] arrays = mcl.createArray();
// arrays[0] is an integer array, arrays[1] is string array and so on.
int[] arr = arrays[0];
现在,您可以根据需要使用数组。希望你清楚这个概念。