下面是一个case类,它验证name参数既不是null也不是空:
case class MyClass(name: String) {
require(Option(name).map(!_.isEmpty) == Option(true), "name is null or empty")
}正如预期的那样,将null或空字符串传递给name会导致IllegalArgumentException。
是否可以重写验证以获得Success或Failure,而不是抛出IllegalArgumentException
发布于 2013-12-09 19:08:58
不能让构造函数返回类类型以外的其他内容。但是,您可以在同伴对象上定义一个函数来完成以下操作:
case class MyClass private(name: String)
object MyClass {
def fromName(name: String): Option[MyClass] = {
if(name == null || name.isEmpty)
None
else
Some(new MyClass(name))
}当然,如果您愿意,可以返回Validation、Either或Try。
https://stackoverflow.com/questions/20478588
复制相似问题