如何将命令行中的值转换为pojo列表

时间:2017-03-10 11:57:07

标签: java pojo

我有一个像这样的主要方法:

 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循环中做到这一点?

但是我仍然坚持如何在主方法中基于索引引用pojo及其元素?任何帮助将不胜感激

查看允许我在下面的代码片段中引入循环的内容:

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

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

1 个答案:

答案 0 :(得分:1)

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