学习Java:如何为System.out.println()创建一个简短的别名

时间:2011-07-02 15:52:58

标签: java

我想创建System.out.println()的别名或扩展版本来打印各种类型的变量。如何将具有未知类型/类的参数传递给方法?

public static void p(VariableType... args) {
    System.out.println(args[0]);
    // ...
}

6 个答案:

答案 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方法是一种糟糕的风格,并且(可能)是一个坏主意:

  1. 方法名称p不会告诉任何人它的作用。

  2. 写入标准输出通常是个坏主意。例外情况是应用程序旨在作为命令行实用程序运行。

  3. 即使写入标准输出是正确的,这样做也会限制您重用代码的能力。更好的方法是使流成为参数; e.g。

    public void outputFoo(Foo foo, PrintStream ps) {
        ps.println("Foo's bar is " + foo.bar);
        // ...
    }
    
  4. 如果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); }