Как я могу сделать передачу списка только с одним значением другому методу менее многословным - PullRequest
4 голосов
/ 12 сентября 2011

Если у меня есть такой метод

private void setStringList(List<String> aList) { ... }

Тогда это, очевидно, возможно

private void testOnly() {
    List<String> myDummyList = new ArrayList<String>();
    myDummyList.add("someValue");
    setStringList(myDummyList);
}

но есть ли способ сделать его менее многословным, как это

private void testOnly2() {        
    setStringList(new ArrayList<String>().add("someValue"));
}

Я знаю, что выше - ошибка компиляции, но она просто показывает, чтобы показать, чего я хочу достичь, просто чтобы сделать ее менее многословной.

Ответы [ 3 ]

6 голосов
/ 12 сентября 2011

А также предложения от aioobe, которые просто используют JDK, Гуава предлагает различные варианты, в том числе:

setStringList(Lists.newArrayList("someValue"));

setStringList(ImmutableList.of("someValue"));
6 голосов
/ 12 сентября 2011

Да:

private void testOnly2() {        
    setStringList(new ArrayList<String>(Arrays.asList("someValue")));
}

или, в зависимости от того, для чего вы используете аргумент в setStringList:

private void testOnly2() {        
    setStringList(Arrays.asList("someValue"));
}

Другой вариант - использовать инициализатор экземпляра, например:

private void testOnly2() {
    setStringList(new ArrayList<String>() {{
        add("someValue");
    }});
}

(хотя это создает анонимный подкласс ArrayList.)

1 голос
/ 13 июня 2016

Вы можете использовать:

private void testOnly2() {        
  setStringList(Collections.singletonList("someValue"));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...