我想做类似以下的事情(简单的例子):
f(Class t, x) { x as t }
int x = f(int, "42")
我如何在 Groovy 中做到这一点?
我想做类似以下的事情(简单的例子):
f(Class t, x) { x as t }
int x = f(int, "42")
我如何在 Groovy 中做到这一点?
假设您将 f 定义为类的方法,您可以执行以下操作:
class F
{
static <T> T f(Class<T> outputClass, input)
{
input.asType(outputClass)
}
}
然后通过调用使用它
F.f(Integer, "42")
如果您不关心泛型(尽管它们也应该帮助您的 IDE 确定返回值是 T 类型),这也可以:
class F
{
static f(Class outputClass, input)
{
input.asType(outputClass)
}
}
assert F.f(Integer, "42").class == Integer
Groovier 方法是使用闭包:
f = {Class t, x -> x.asType(t)}
assert f(int, "2") == 2
assert f(float, "2") == 2.0f
assert f(double, "2") == 2.0d
assert f(Integer, "2") == 2
assert f(Long, "2") == 2L
assert f(BigDecimal, "2") == 2G
只是为了完成您的代码示例:
def f(Class t, x) { x.asType(t) }
int x = f(int, "42")