任意の型の引数を取り、それを出力して返すJava関数を作成するにはどうすればよいですか?
スキームでは、次のマクロを作成するために使用されます。
(define-syntax dump
(syntax-rules ()
((_ arg) (let ((value arg))
(display 'arg)
(display " -> ")
(display value)
(newline)
arg))))
これを呼び出すと(+ 1 (dump (* 2 3)))
、7が返され、が出力されます(* 2 3) -> 6
。
私はJavaで似たようなことを試しました:
public class Debug<T>
{
public static T dump (T arg)
{
System.err.println (arg);
return arg;
}
}
しかし、エラーが発生します:
non-static class T cannot be referenced from a static context
これを解決する方法は?
編集 ありがとう私はそれを手に入れました:
import java.util.Arrays;
public class Debug
{
public static <T> T dump (T arg)
{
System.err.println(arg instanceof Object[] ?
Arrays.toString((Object[])arg) : arg);
return arg;
}
}
素敵なスキーム私はあなたのために悲しみます...