我想创建System.out.println()
的别名或扩展版本来打印各种类型的变量。如何将具有未知类型/类的参数传递给方法?
public static void p(VariableType... args) {
System.out.println(args[0]);
// ...
}
答案 0 :(得分:11)
您可以使用Object
。
public static void p(Object... args) {
System.out.println(args[0]);
// ...
}
答案 1 :(得分:4)
除非你想要输出中有很多行,否则你可以这样做。
public static <PrintableToString> void p(PrintableToString... args) {
for(PrintableToString pts: args)
System.out.print(pts);
System.out.println();
}
答案 2 :(得分:3)
这个怎么样:
public static <T> void p(T... args)
{
System.out.println(args[0]);
// ...
}
答案 3 :(得分:3)
其他人已经回答了你的问题。
我只想指出你的p
方法是一种糟糕的风格,并且(可能)是一个坏主意:
方法名称p
不会告诉任何人它的作用。
写入标准输出通常是个坏主意。例外情况是应用程序旨在作为命令行实用程序运行。
即使写入标准输出是正确的,这样做也会限制您重用代码的能力。更好的方法是使流成为参数; e.g。
public void outputFoo(Foo foo, PrintStream ps) {
ps.println("Foo's bar is " + foo.bar);
// ...
}
如果p
方法将用于跟踪打印,那么使用p
包装而不是System.err.println
将隐藏PMD等样式检查器的跟踪图。您可能认为这是一件好事,但实际上这是一件坏事,因为现在PMD不会提醒您在将代码投入生产/运送给客户之前删除跟踪打印件。
答案 4 :(得分:1)
只需使用Object,因为Object是所有Java变量的类型。
答案 5 :(得分:0)
这是一个非常简单的解决方案,适用于我所有的用例:
public static final void print(Object x) { System.out.println(x); }