Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.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 如何将命令行中的值放入pojo列表_Java_Pojo - Fatal编程技术网

Java 如何将命令行中的值放入pojo列表

Java 如何将命令行中的值放入pojo列表,java,pojo,Java,Pojo,我有这样一个主要方法: public static void main(String[] args) { // Implement null checks ProfileData profileData = new ProfileData(); try { profileData.setaJIO(args[0]!=null?args[0]:""); profileData.se

我有这样一个主要方法:

 public static void main(String[] args) {

        // Implement null checks
        ProfileData profileData = new ProfileData();


        try {
                profileData.setaJIO(args[0]!=null?args[0]:"");
                profileData.setAutopayCreated(args[1]!=null?args[1]:"");

        }catch(Exception e){
            e.printStackTrace();
        }
}
我有一个ProfileData对象,它是一个PoJo,有大约100个条目,我希望从命令行加载这个对象,但是在main方法中手动填充所有这些条目变得很乏味。有没有一种方法可以在for循环中实现这一点

然而,我被困在了如何在main方法中引用pojo及其基于索引的元素的问题上?任何帮助都将不胜感激

在下面的代码片段中介绍一个循环:

 try {
                profileData.setaJIO(args[0]!=null?args[0]:"");
                profileData.setAutopayCreated(args[1]!=null?args[1]:"");

        }catch(Exception e){
            e.printStackTrace();
        }

在Kotlin中,您可以这样写:

class Test(map: Map<String, Any?>) {
    val name: String by map
    val age: String     by map

    override fun toString(): String {
        return "Test[$name, $age]"
    }
}

fun parseArgs(args: Array<String>): Test {
    val zipArgs: List<Pair<String, String>> = args.zip(args.drop(1))

    val paramMap = zipArgs.mapNotNull { (name, param) ->
        if (!name.contains("-"))
            return@mapNotNull null

        name.substringAfter("-") to param
    }.toMap()

    return Test(paramMap)
}

fun main(args: Array<String>) {
    val testArgs = arrayOf("-name", "testName", "-age", "123")

    val test = parseArgs(testArgs)

    println(test)
}
类测试(map:map){
val名称:映射字符串
val年龄:按映射的字符串
重写funtostring():String{
返回“Test[$name,$age]”
}
}
fun parseArgs(args:Array):测试{
val zipArgs:List=args.zip(args.drop(1))
val paramMap=zipArgs.mapNotNull{(名称,参数)->
如果(!name.contains(“-”)
return@mapNotNull无效的
name.substringAfter(“-”)到param
}.toMap()
返回测试(paramMap)
}
趣味主线(args:Array){
val testArgs=arrayOf(“-name”,“testName”,“-age”,“123”)
val test=parseArgs(testArgs)
println(测试)
}

您应该简化设计,您可以引入
ArgumentParser
类。然后main方法将只调用它的一个方法来传递整个数组。这将把解析责任从main转移到单独的类。我仍然必须手动执行,这样做有一种复杂的方法,并且需要更少的代码行。您可以使用spring来实现,为每个变量提供服务类,并在for循环中加载bean和execute方法。听起来很有趣,但如果您有一个繁忙的解析要做,将为您减轻。谢谢,但我使用的是Java