次のようなことをしたい(簡単な例):
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でこれを行うにはどうすればよいですか?
Groovy の方法は、クロージャを使用することです。
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
f をクラスのメソッドとして定義していると仮定すると、次のようにすることができます。
class F
{
static <T> T f(Class<T> outputClass, input)
{
input.asType(outputClass)
}
}
次に、呼び出して使用します
F.f(Integer, "42")
ジェネリックを気にしない場合 (ただし、戻り値が T 型であることを IDE が検出するのにも役立ちます)、これも機能します。
class F
{
static f(Class outputClass, input)
{
input.asType(outputClass)
}
}
assert F.f(Integer, "42").class == Integer
コード例を完成させるだけです:
def f(Class t, x) { x.asType(t) }
int x = f(int, "42")