Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数组中的多个类型用于初始化_Java_Arrays - Fatal编程技术网

Java 数组中的多个类型用于初始化

Java 数组中的多个类型用于初始化,java,arrays,Java,Arrays,我正在尝试创建很多对象,但反复使用newobjectname(…)并不是我想要的 new Obj("String", 0, true); new Obj("Diff", 9, true); new Obj("Changed", 2, false); ... 我想要类似于: massCreateObj({ {"String", 0, true }, {"Diff", 9, true }, {"Changed", 2, false} ... }); 我之所

我正在尝试创建很多对象,但反复使用
newobjectname(…)
并不是我想要的

new Obj("String", 0, true);
new Obj("Diff", 9, true);
new Obj("Changed", 2, false);
...
我想要类似于:

massCreateObj({
    {"String",  0, true },
    {"Diff",    9, true },
    {"Changed", 2, false}
    ...
});
我之所以要这样做,是因为它更容易管理多个对象,例如:

massCreateObjs({
    "Obj" => {
        {"str", 0, false},
        {"sss", 1, true}
    },
    "Obj2" => {
        {false, "different"},
        {true, "diff"}
    }
});
否则,我将不得不将其展平:

new Obj("str", 0, false);
new Obj("sss", 1, true);
new Obj2(false, "different");
new Obj2(true, "diff");
这只是不可扩展。使用数组,我可以很容易地看到正在创建哪些对象,并且没有重复的文本(新对象名称)

有没有一种方法可以使用Hashmaps、数组或元组来实现这一点?(对其他解决方案也持开放态度)

我已经看了hashmaps,但它本质上只是一个K->V设置


我也看过包装纸,但后来又回到了我开始的地方。如果我创建一个类/接口,我仍然需要使用新的类名或其他什么,这是我首先要避免的。

与其在Java中指定对象,不如从文件中读取它们的参数。该文件可以是您喜欢的任何格式,并且可以进行解析。编写Java代码,从构造函数调用包含读取文件并从中生成数组的数组的对象


作为一种变体,编写一个单独的程序来读取和解析文件,并从中生成一个Java程序。这样,您就可以直接复制像
Color.BLUE

这样的初始值设定项,而不是在Java中指定对象,而是从文件中读取它们的参数。该文件可以是您喜欢的任何格式,并且可以进行解析。编写Java代码,从构造函数调用包含读取文件并从中生成数组的数组的对象


作为一种变体,编写一个单独的程序来读取和解析文件,并从中生成一个Java程序。这样,您就可以直接复制像
Color.BLUE

这样的初始值设定项,而不是在Java中指定对象,而是从文件中读取它们的参数。该文件可以是您喜欢的任何格式,并且可以进行解析。编写Java代码,从构造函数调用包含读取文件并从中生成数组的数组的对象


作为一种变体,编写一个单独的程序来读取和解析文件,并从中生成一个Java程序。这样,您就可以直接复制像
Color.BLUE

这样的初始值设定项,而不是在Java中指定对象,而是从文件中读取它们的参数。该文件可以是您喜欢的任何格式,并且可以进行解析。编写Java代码,从构造函数调用包含读取文件并从中生成数组的数组的对象


作为一种变体,编写一个单独的程序来读取和解析文件,并从中生成一个Java程序。这样,您就可以直接复制初始值设定项,如
Color.BLUE

如果您想硬编码代码中的参数,但又想避免重复“new”关键字,那么简单的循环就可以了

String[] args1 = {"hello", "bye", "potatoe"};
int[] args2 = {5,2,7};
boolean[] args3 = {true,false,true};

Obj[] objects = new Obj[3];

for (int i = 0; i < 3; i++) {
    objects[i] = new Obj(args1[i], args2[i], args3[i]);
}
String[]args1={“你好”,“再见”,“土豆”};
int[]args2={5,2,7};
布尔值[]args3={true,false,true};
Obj[]对象=新Obj[3];
对于(int i=0;i<3;i++){
对象[i]=新对象(args1[i]、args2[i]、args3[i]);
}

并不是说这是一个好代码,而是可以用更好的方式应用这个想法:)

如果您想硬编码代码中的参数,但又想避免重复“new”关键字,那么简单的循环就可以了

String[] args1 = {"hello", "bye", "potatoe"};
int[] args2 = {5,2,7};
boolean[] args3 = {true,false,true};

Obj[] objects = new Obj[3];

for (int i = 0; i < 3; i++) {
    objects[i] = new Obj(args1[i], args2[i], args3[i]);
}
String[]args1={“你好”,“再见”,“土豆”};
int[]args2={5,2,7};
布尔值[]args3={true,false,true};
Obj[]对象=新Obj[3];
对于(int i=0;i<3;i++){
对象[i]=新对象(args1[i]、args2[i]、args3[i]);
}

并不是说这是一个好代码,而是可以用更好的方式应用这个想法:)

如果您想硬编码代码中的参数,但又想避免重复“new”关键字,那么简单的循环就可以了

String[] args1 = {"hello", "bye", "potatoe"};
int[] args2 = {5,2,7};
boolean[] args3 = {true,false,true};

Obj[] objects = new Obj[3];

for (int i = 0; i < 3; i++) {
    objects[i] = new Obj(args1[i], args2[i], args3[i]);
}
String[]args1={“你好”,“再见”,“土豆”};
int[]args2={5,2,7};
布尔值[]args3={true,false,true};
Obj[]对象=新Obj[3];
对于(int i=0;i<3;i++){
对象[i]=新对象(args1[i]、args2[i]、args3[i]);
}

并不是说这是一个好代码,而是可以用更好的方式应用这个想法:)

如果您想硬编码代码中的参数,但又想避免重复“new”关键字,那么简单的循环就可以了

String[] args1 = {"hello", "bye", "potatoe"};
int[] args2 = {5,2,7};
boolean[] args3 = {true,false,true};

Obj[] objects = new Obj[3];

for (int i = 0; i < 3; i++) {
    objects[i] = new Obj(args1[i], args2[i], args3[i]);
}
String[]args1={“你好”,“再见”,“土豆”};
int[]args2={5,2,7};
布尔值[]args3={true,false,true};
Obj[]对象=新Obj[3];
对于(int i=0;i<3;i++){
对象[i]=新对象(args1[i]、args2[i]、args3[i]);
}

并不是说这是一个好代码,而是可以用更好的方式应用这个想法:)

您可以使用反射,但您必须按如下方式定义自己的函数:

public static <T> Object[] multipleConstructor(Class<T> type,
        Object[]... initargs) {
    ArrayList<T> list = new ArrayList<>();
    @SuppressWarnings("unchecked")
    Constructor<T>[] ctors = (Constructor<T>[]) type.getConstructors();
    for (int i = 0; i < initargs.length; i++) {
        for (Constructor<T> c : ctors) {
            try {
                list.add(c.newInstance(initargs[i]));
                break;
            } catch (Throwable t) {
                continue;
            }
        }
    }
    return list.toArray();
}
publicstaticobject[]multipleConstructor(类类型,
对象[]…initargs){
ArrayList=新建ArrayList();
@抑制警告(“未选中”)
构造函数[]构造函数=(构造函数[])类型.getConstructors();
for(int i=0;i
您可以使用反射,但必须按如下方式定义自己的函数:

public static <T> Object[] multipleConstructor(Class<T> type,
        Object[]... initargs) {
    ArrayList<T> list = new ArrayList<>();
    @SuppressWarnings("unchecked")
    Constructor<T>[] ctors = (Constructor<T>[]) type.getConstructors();
    for (int i = 0; i < initargs.length; i++) {
        for (Constructor<T> c : ctors) {
            try {
                list.add(c.newInstance(initargs[i]));
                break;
            } catch (Throwable t) {
                continue;
            }
        }
    }
    return list.toArray();
}
publicstaticobject[]multipleConstructor(类类型,
对象[]…initargs){
ArrayList=新建ArrayList();
@抑制警告(“未选中”)
构造函数[]构造函数=(构造函数[])类型.getConstructors();
for(int i=0;i
您可以使用反射,但必须按如下方式定义自己的函数:

public static <T> Object[] multipleConstructor(Class<T> type,
        Object[]... initargs) {
    ArrayList<T> list = new ArrayList<>();
    @SuppressWarnings("unchecked")
    Constructor<T>[] ctors = (Constructor<T>[]) type.getConstructors();
    for (int i = 0; i < initargs.length; i++) {
        for (Constructor<T> c : ctors) {
            try {
                list.add(c.newInstance(initargs[i]));
                break;
            } catch (Throwable t) {
                continue;
            }
        }
    }
    return list.toArray();
}
p
{"test 1", 0, true},
{"test 2", 3, false}