如何编写一个简单地接受任何类型的参数、打印并返回它的 Java 函数?
在 Scheme 中,我习惯于编写以下宏:
(define-syntax dump
(syntax-rules ()
((_ arg) (let ((value arg))
(display 'arg)
(display " -> ")
(display value)
(newline)
arg))))
调用它(+ 1 (dump (* 2 3)))
会返回 7 和 print (* 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;
}
}
可爱的计划我为你感到悲伤......