2015-10-09 43 views
0

下面的代码返回一个例外:的Groovy作为关键字

String x = "12" 
double y = x 

然而,这一个不:

String x = "12" 
double y = x as double 

在我的申请,我有一个串x,我想试试自动将它与'as'关键字一起强制转换为我正在影响它的变量的类,尽管我不提前知道y的类。这可能没有一些巫术,如使用as y.class什么的?如果y碰巧不是一个字符串(如双)

String x = "12" 
y = x 

上面的代码返回一个错误,但我想它尝试失败之前投X到Y的类型。

+0

使用转换库(可能仍然抛出一个异常,如果它是不可兑换),创建一个工厂(MEH),或只捕获异常并处理呢? –

回答

0

可以铸造之前对其进行测试:

groovy:000> s="x12" 
===> x12 
groovy:000> s.isNumber() ? s.toDouble() : null 
===> null 
groovy:000> s = "12" 
===> 12 
groovy:000> s.isNumber() ? s.toDouble() : null 
===> 12.0 
2

表达x as double相同的方法调用x.asType(Double)。所以,你可以使用这个简单的异教咒语:

String x = "12" 
double y 

y = x.asType(y.class)