【发布时间】:2017-01-31 14:52:27
【问题描述】:
当心以下可能是愚蠢的问题:
我有一个方法使用 String.format() 方法来格式化一些文本。目前,它接收两个参数,所以我有两个“%s”参数来创建我想要的任何文本。
但是有人可能想在我的方法中使用 3 个参数,或者 4 个,或者 100 个。如何将传递给 String.format() 方法的参数的长度作为可变参数,以便在有 3 个参数传递给它的情况下,将有 3 个“%s”而不是当前的 2 个;或 4,或 100。
如何获取传递给 String.format() 方法的参数数量,以便其中的文本根据需要自动添加“%s”?因为参数只是作为常规参数传递,而不是作为数组或类似的东西传递。如何获取参数数组的长度?
PS。这很重要 - 我不是在谈论获取(字符串...参数) - 没有这样的事情 - 当有人调用您的方法时,它使用实际参数,“字符串...参数”不可用于抓取和获取它的长度。
我意识到这是一个糟糕的问题,因为我面前没有代码可以进一步解释,但这一直困扰着我很长一段时间 - 你如何获得传递给方法的参数数量?
对于这样的事情:
String.format(SomeObject.SomeString, param1, param2,...,param 100)
编辑:SomeObject.SomeString 声明如下:
String SomeString = "Blah blah %s blah blah blah %s";
所以它有两个被硬编码的参数。
当有人使用它时,您如何自定义SomeObject.SomeString 以便它“知道”有多少参数已传递给 String.format() 方法(以便 SomeObject.SomeString 知道要动态添加多少 %s) ?
【问题讨论】:
-
知道传递给
String.format的参数数量有什么用处?如果您的格式字符串的参数数量不正确,您将获得MissingFormatArgumentException;如果你有太多,你无论如何都不会看到额外的。您唯一能做的就是将args.length作为显式参数传递给String.format调用。
标签: java variadic-functions string.format