我有一个像这样的主要方法:
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();
}
答案 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)
}