gpt4 book ai didi

java - 如何解决 "non-static class T cannot be referenced from a static context"?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:50:49 24 4
gpt4 key购买 nike

如何编写一个 Java 函数,它只接受任何类型的参数,打印并返回它?

在Scheme中我习惯写如下宏:

(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

如何解决?

最佳答案

您将您的类实现为其他类中的内部类。在这种情况下,您必须将类标记为 static

但是,真正的答案是:你根本不需要类,你只需要方法:

public static <T> T dump(T arg) { ... }

作为旁注,我在我的代码中使用了相同的技巧,但我总是包含一个 msg 参数以便于转储读取/grepping:

public static <T> T dump(String msg, T arg) { ... }

关于java - 如何解决 "non-static class T cannot be referenced from a static context"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15406321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com