【发布时间】:2009-12-29 17:55:52
【问题描述】:
我厌倦了将asType 的每个调用都封装在try/catch 块中,例如:
def b = ""
def c
try {
c = b as Integer
}
catch (NumberFormatException) {
c = null
}
println c
相反,我想在我的代码中编写以下内容:
def b = ""
def c = b as Integer
如果b 的格式不正确,那么我希望将null 分配给c
那么我怎样才能为asType 操作符重载这个默认行为呢?
如果我为整个 Grails 应用程序这样做会不会有风险?还是简单地创建我自己的方法(如asTypeSafe)并调用它的最佳解决方案? Groovy/Grails 是否有一些关于 Groovy 类型转换的配置调整?
EDIT(适用于对实施答案感兴趣的人) 根据接受的答案,我已将以下代码添加到我的 bootstrap.groovy 文件中,它运行良好。
String.metaClass.asTypeSafe = {Class c ->
try {
delegate.asType(c)
}
catch (Exception) {
return null
}
}
我这样称呼它:
def myNum = myStr.asTypeSafe(Integer)
【问题讨论】:
标签: grails groovy type-conversion