如何从命令行取值到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个条目,我希望从命令行加载这个对象,但是在主方法中手动填充所有这些条目变得单调乏味。 有没有办法可以在for循环中做到这一点?
然而,我坚持在如何在主要方法基础上索引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) }
希望这有所帮助。 确保ProfileData中的构造函数接受两个变量。
public static void main(String[] args) { List<ProfileData>data = new ArrayList<>(); try { for(int i = 0; i < args.length-1; i=i+2){ data.add(new ProfileData(args[i], args[i+1])); } for (ProfileData pd : data) { System.out.println(pd.getjIO() + " " + pd.getAutopayCreated()); } }catch(Exception e){ e.printStackTrace(); } }
- 将JavaScript哈希函数复制到java / kotlin
- thead.join查杀正在运行的线程java(kotlin)
- 使用特定软件包时无法找到或加载主类
- Android Studio 3.0 Canary 1:引用Kotlin类的Kotlin测试或Java测试失败
- 即使在androidTest包中,Kotlin类也会作为junit测试运行 – 对于Java类,它运行正常
- Smartcast是不可能的,因为propery有开放或自定义的getter
- 如何在Kotlin中使用Swagger @ApiResponses注解?
- 在java类中调用扩展函数作为任何RX操作符
- Python中的PIP风格的本地Java包管理系统?