Java: могу ли я преобразовать список объектов в список строк [] и наоборот? - PullRequest
6 голосов
/ 22 ноября 2011

Возможно ли это, не просматривая список и не приводя объекты?

Мне также нужно преобразовать List<Object> в List<T> (T = предопределенный объект), если это возможно?

Редактировать: для пояснения я пытаюсь использовать List<Object> в качестве возвращаемого типа метода класса, который широко используется в моем коде.

Ответы [ 4 ]

9 голосов
/ 22 ноября 2011

На самом деле это возможно из-за стирания типа.Вы можете преобразовать параметризованный тип в необработанный тип, и наоборот.

    List<Object> listO = new ArrayList<Object>( );
    listO.add( "Foo" );
    listO.add( "Bar" );

    List listQ = listO;
    List<String> listS = (List<String>) listQ;

Однако, это не означает, что это хорошая идея.Это работает вокруг проверки типов во время компиляции параметризованных типов.Если ваш список содержит объекты, отличные от ожидаемого вами, могут возникнуть непредвиденные результаты.

6 голосов
/ 22 ноября 2011

Нет. Это просто недопустимое преобразование, потому что не все Object s String[].


Вы могли бы определить это для себя в двух строках кода.


Редактировать

Похоже, вам нужно написать метод более обобщенно. Примерно так:

public <T> List<T> getGenericList()
{
    return new ArrayList<T>();
}

Это может вернуть List<String[]> примерно так:

List<String[]> listOfStringArr = getGenericList();
0 голосов
/ 22 ноября 2011

Это невозможно по определению.Все классы в Java расширяют Object.Список объектов может теоретически содержать элементы любого типа по вашему желанию.Как вы хотите конвертировать что-то для определенного типа T?

0 голосов
/ 22 ноября 2011

Нет.Что если Object в первом списке не на самом деле T?

При этом вы можете попытаться привести List<Object> к List<T> (будьте готовы кисключения).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...