从String数组填充对象的属性

时间:2019-05-13 13:59:40

标签: arrays string groovy

如果我们有一个常规的对象,例如Customer [名称,电子邮件,电话]和格式为

的字符串
String infoLine = "Stanislav,stanislav@stackoverflow.com,004612345678" 

解析该字符串并填充该对象的字段的最简单方法是什么?

(我们可以拆分的示例字符串,这就是为什么问题来自字符串数组)

1 个答案:

答案 0 :(得分:2)

假设您有一个构造函数

scoreDisplay.text = scoreDisplay.text ?? "" + ", \(testScore)"
scoreDisplay.text = scoreDisplay.text?.trimmingCharacters(in: CharacterSet(charactersIn: " ,"))

您可以这样做:

Customer(String name, String email, String phone)

如果不想编写构造函数,可以让Groovy为您创建一个构造函数:

new Customer(*infoLine.split(','))

或更妙的是,import groovy.transform.* @TupleConstructor class Customer { String name String email String phone } String infoLine = "Stanislav,stanislav@stackoverflow.com,004612345678" new Customer(*infoLine.split(',')) 使得属性@Immutable

final

另一种选择(假设您的字段是按照它们在字符串中出现的顺序定义的,并且没有其他字段),将生成@Immutable class Customer { String name String email String phone } 的映射,并告诉groovy将映射转换为客户喜欢:

[name: 'aaa', emai... etc

但这感觉有点脆弱,添加批注或构造函数可能更快。