Подтвердить что ты не робот

Лучший способ создания одноэлементного массива

Что такое "самый простой" способ создать одиночный (только один элемент) массив объектов в Java?

4b9b3361

Ответ 1

Object [] singleton = { new SomeObject() };

Ответ 2

Стандартный способ:

String[] arr = new String[]{"I am the one and only"};

Я боюсь, что это не намного проще, чем это.

Изменить: оно:

String[] arr = {"I am the one and only"};

Спасибо aioobe, я все время забываю об этом.


Конечно, если вы часто создаете массив, вы можете создать вспомогательный метод, который делает вещи немного проще:

public static <T> T[] asArray(T... items){
    return items;
}

String[] arr = asArray("I am the one and only");

(Но вы не можете обеспечить во время компиляции, что он будет массивом только с одним элементом)


Далее я собирался написать метод одиночного массива, но Стивен избил меня до этого.

Ответ 3

enum solution (антиотражающая атака):

enum MySingleton{
    INSTANCE(new String[]{"a","b"});

    final String[] values;

    private MySingleton(String[] values) {
        this.values = values;
    }
}

ссылайтесь на него как:

MySingleton.INSTANCE;

Ответ 4

Это должно выполнить задание

public SomeType[] makeSingletonArray(SomeType elem) {
    return new SomeType[]{elem};
}

Общая версия этого метода будет несколько неудобна в использовании, так как вам нужно передать объект Class в качестве дополнительного параметра.

Вложение выражения SomeType[]{elem} проще, и как обычно я это делаю.

Ответ 5

Вы можете сделать это:

String[] a = Collections. singletonList ("SingleElement").toArray();

Изменить: Упс! Вышеприведенный пример не компилируется. Как указано в комментарии, это можно сделать либо как:

Object[] a = Collections.singletonList("SingleElement").toArray();
Или
String[] a = Collections.singletonList("SingleElement").toArray(new String[1]);