如何创建一个接受可变数量参数的Java方法? [英] How can I create a Java method that accepts a variable number of arguments?

查看:302
本文介绍了如何创建一个接受可变数量参数的Java方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

例如,Java自己的String.format()支持可变数量的参数.

For example, Java's own String.format() supports a variable number of arguments.

String.format("Hello %s! ABC %d!", "World", 123);
//=> Hello World! ABC 123!

如何制作自己的函数,以接受可变数量的参数?

How can I make my own function that accepts a variable number of arguments?

后续问题:

我真的是想为此方便快捷:

I'm really trying to make a convenience shortcut for this:

System.out.println( String.format("...", a, b, c) );

这样我就可以这样称呼它:

So that I can call it as something less verbose like this:

print("...", a, b, c);

我该如何实现?

推荐答案

您可以编写一个便捷方法:

You could write a convenience method:

public PrintStream print(String format, Object... arguments) {
    return System.out.format(format, arguments);
}

但是正如您所看到的,您只是将其重命名为format(或printf).

But as you can see, you've simply just renamed format (or printf).

这是您可以使用它的方式:

Here's how you could use it:

private void printScores(Player... players) {
    for (int i = 0; i < players.length; ++i) {
        Player player = players[i];
        String name   = player.getName();
        int    score  = player.getScore();
        // Print name and score followed by a newline
        System.out.format("%s: %d%n", name, score);
    }
}

// Print a single player, 3 players, and all players
printScores(player1);
System.out.println();
printScores(player2, player3, player4);
System.out.println();
printScores(playersArray);

// Output
Abe: 11

Bob: 22
Cal: 33
Dan: 44

Abe: 11
Bob: 22
Cal: 33
Dan: 44

请注意,也有类似的System.out.printf方法,它们的行为方式相同,但是如果您查看实现,printf只会调用format,因此您最好直接使用format.

Note there's also the similar System.out.printf method that behaves the same way, but if you peek at the implementation, printf just calls format, so you might as well use format directly.

  • Varargs
  • PrintStream#format(String format, Object... args)
  • PrintStream#printf(String format, Object... args)

这篇关于如何创建一个接受可变数量参数的Java方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆