0

次のようなことをしたい(簡単な例):

f(Class t, x) { x as t }

int x = f(int, "42")

Groovyでこれを行うにはどうすればよいですか?

4

3 に答える 3

3

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
于 2013-08-02T13:24:46.220 に答える
3

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
于 2013-08-02T07:26:53.413 に答える
1

コード例を完成させるだけです:

def f(Class t, x) { x.asType(t) }

int x = f(int, "42")
于 2013-08-02T17:55:18.557 に答える