Объект ... Объект [] и форматирование - PullRequest
0 голосов
/ 13 марта 2019

У меня есть разные типы данных (это могут быть String, Integer ...).Вот простой пример:

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, «один»], но вместо этого «один» инкапсулируется внутри массива.Я хотел бы что-то "плоский".Есть идеи?

Спасибо

Ответы [ 2 ]

1 голос
/ 13 марта 2019

то, что вы передаете 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);
}
0 голосов
/ 13 марта 2019

из вашего примера форматированное сообщение всегда содержит 2 параметра, поэтому вы можете упростить его следующим образом:

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

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

public static void before(Object data) {
    go(1, data);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...