首页 > 解决方案 > 对象...对象[] 和格式

问题描述

我有不同类型的数据(可能是字符串、整数......)。这是一个简单的例子:

public static void main(String[] args) {
    before("one");
}

public static void before(Object... datas ) {
    go(1, datas);
}

public static void go(Object...params ) {
    System.out.println(MessageFormat.format("{0} is the same as {1}", params));
}

我想要这个:"1 is the same as one"但是得到了这个"1 is the same as [Ljava.lang.Object;@4554617c"

似乎问题出在我的参数中,我想要一个像这样的数组 [1, "one"] 而是将 "one" 封装在一个数组中。我想要一些“扁平”的东西。有任何想法吗 ?

谢谢

标签: javaarraysparametersjava-8

解决方案


你传递给go的实际上是 1 和包含“一”的数组,这就是你得到它的原因[Ljava.lang.Object;@4554617c"。您可以将方法更改为:

public static void before(Object... datas) {
    Object[] arr = Stream.concat(Stream.of(1), Arrays.stream(datas))
                         .toArray();
    go(arr);
}

推荐阅读