如何创建接受可变数量参数的 Java 方法?

2024-03-25

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

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

如何创建自己的函数来接受可变数量的参数?


后续问题:

我真的想为此创建一个方便的快捷方式:

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

这样我就可以将其称为不太冗长的东西,如下所示:

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

我怎样才能实现这个目标?


你可以写一个方便的方法:

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

但正如你所看到的,你只是简单地重命名了format (or printf).

以下是您可以如何使用它:

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直接地。

  • Varargs http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html
  • PrintStream#format(String format, Object... args) http://download.oracle.com/javase/7/docs/api/java/io/PrintStream.html#format%28java.lang.String,%20java.lang.Object...%29
  • PrintStream#printf(String format, Object... args) http://download.oracle.com/javase/7/docs/api/java/io/PrintStream.html#printf%28java.lang.String,%20java.lang.Object...%29
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建接受可变数量参数的 Java 方法? 的相关文章

随机推荐

  • 嵌入Python2和Python3解释器,选择运行时使用哪一个

    有没有一种好方法可以将Python2和Python3解释器嵌入到C程序中 然后运行其中一个or另一个是在运行时做出的决定 这是一个尝试示例 生成文件 all main main main c librun in py2 so librun
  • 如何从对象数组中提取属性并对其进行切片?

    所以我有一个对象数组 它返回电话号码 业务号码和名称 我正在尝试提取businessNumber 和phoneNumber 并希望将它们从 中切片以仅显示最后4 位数字 我能够使用地图来提取businessNumber 但是我如何拆分并以所
  • 自动完成“不是一个函数”

    我们已经在一个简单的 HTML 页面中测试了 Jquery UI jquery ui 1 8 10 custom min js 自动完成功能 该功能有效 然后 我们将相同的代码复制到 Asp net 用户控件中 它就会停止工作 Javasc
  • C# 中 RAM 耗尽时会发生什么?

    我不是计算机专家 所以让我尝试更具体地提出这个问题 我做了一些科学计算 计算有时需要大量内存来存储结果 几天前 我的输出文件占用了 4 GB 的硬盘空间 但我有这么大的 RAM 所以 当您运行的程序分配的内存多于计算机中可用的内存时 CLR
  • 如何将毫秒转换为日期字符串?

    我从服务器得到一个毫秒字符串 如下所示 1345623261 我如何将其转换为正常的日期格式 例如2012 年 8 月 30 日 我尝试使用setMilliseconds 像这样 new Date setMilliseconds time
  • 用不同的猜名称猜数字游戏

    这是我第一次使用 stackoverflow 进行访问 我是编程新手 正在学习 Python 初学者课程 很高兴开始 我们的第二个作业要求我们创建著名的猜数字游戏 对于那些已经了解这个游戏的人 我希望对添加到其中的额外部分提供一些帮助 我们
  • Robolectric junit 测试 - 缺少互联网许可

    我正在为 ma 应用程序开发一些 JUnit 测试 我需要使用 Robolectric Roboguice 库 我现在想做的只是简单的测试 检查 Activity 是否不为空 这是我的代码 RunWith RobolectricGradle
  • VS 解决方案文件的 Windows 资源管理器上下文菜单中的“构建”项?

    我想知道为什么默认情况下不集成它 我希望在 VS 解决方案文件的 Windows 资源管理器的文件上下文菜单中有一个项目来构建它 有这个工具吗 或者我必须自己创建这个 MSBuild Shell 扩展已经存在多年了 http msbuild
  • Jackson 反序列化抽象类

    我正在尝试使用 JSON ObjectMapper 反序列化对象 尝试反序列化时我看到以下错误 com fasterxml jackson databind JsonMappingException 无法构造 com phoenix typ
  • 如何隐藏微调器下拉菜单android

    我想隐藏外部点击时弹出的微调提示 如果提示弹出窗口打开并且用户按主页键活动将最小化 因此当用户再次打开应用程序时 提示弹出窗口应该消失 有什么办法可以实现这一点吗 谢谢 编辑 提示弹出窗口未自定义 所以我不能把它们藏起来onPause or
  • 为什么 Postgres 复制流在单独的函数中使用时不起作用?

    我正在研究 postgres 复制流 API 在处理它的过程中遇到了异常行为 当我使用复制槽在主块内编写整个代码时 一切正常 public class Server implements Config public static void
  • 如何使用LocalBroadcastManager?

    如何使用 定位LocalBroadcastManager如中所述谷歌文档 http developer android com reference android support v4 content LocalBroadcastManag
  • 我可以按顺序链接异步任务吗(在上一个异步任务完成后开始一个)

    每次我做一个httpRequest 当代码执行时 屏幕会被锁定几秒钟 因此我用了AsyncTask做我所有的httpRequest东西在一个单独的线程 同时提出ProgressDialog所以用户知道发生了什么事 我最近遇到了以下情况 我的
  • 角-聚合物相互作用

    我计划尝试 AngularJS 中的一个项目 其中所有组件都将使用 Polymer 开发 在开始这个项目之前 我有几个疑问 使用 Angular 服务获取数据后 我可以更新 Polymer 组件数据模型 也可以通过 UI 吗 如果是 那么如
  • 之前和之后的样式输入范围

    我正在关注这个方法 http css tricks com styling cross browser compatible range inputs css 来自 CSS Tricks 来设置输入范围的样式 并尝试使用之前和之后的伪类 下
  • Breeze JS - 带有 EFContextProvider 的存储库,启用/禁用 OData 过滤

    我正在寻找使用微风 EFContextProvider 实现存储库模式 在此存储库中 我将公开一种使用 OData 过滤来查询数据库的方法 就像默认情况下微风的行为一样 我还想公开一个忽略 OData 过滤的方法 并返回一个元素列表 就好像
  • 检测所有摄像头android

    我有一个使用 Camera2 API 来获取相机预览的应用程序 我想在手机的镜头之间进行选择 在我的代码中 我使用以下代码 CameraManager manager CameraManager activity getSystemServ
  • 按数字顺序对目录中的文件进行排序和列出

    这是我的文件夹结构 home files encounters 9 22 11 0 jpg home files encounters 9 22 11 n jpg puts Dir glob home files jpg 0 当我执行上面的
  • Money_format() 选项

    我正在查看 php 中的 Money format 函数 并对如何让它按照我想要的方式格式化感到困惑 我不想在字符串前面有 USD 我想要每 3 位数字和 2 位小数点有一个逗号 因此 12345 67 将被格式化为 12 345 67 T
  • 如何创建接受可变数量参数的 Java 方法?

    比如Java自己的String format 支持可变数量的参数 String format Hello s ABC d World 123 gt Hello World ABC 123 如何创建自己的函数来接受可变数量的参数 后续问题 我