List <Object>java.lang.ClassCastException: java.util.Vector нельзя преобразовать в java.util.ArrayList - PullRequest
0 голосов
/ 17 мая 2019

Это мой простой код.Мне нужен клон списка ArrayListOnayStatu.GtbEtobsOYenibelge является юридическим лицом.Но есть проблема приведения java.lang.ClassCastException: java.util. Вектор не может быть приведен к java.util.ArrayList .Спасибо

List<GtbEtobsOYenibelge> listOnayStatu = new ArrayList<>();
List<GtbEtobsOYenibelge> cloneOnayStatu;
listOnayStatu = servis.listOnayStatus4Belge(user.getBirimId().getId());
cloneOnayStatu =  ((List) ((ArrayList) listOnayStatu).clone());

Весь код такой.

Ответы [ 3 ]

1 голос
/ 17 мая 2019

Вы можете просто использовать конструктор копирования ArrayList, который принимает Collection<? extends E>:

List<GtbEtobsOYenibelge> listOnayStatu = servis.listOnayStatus4Belge(user.getBirimId().getId());
List<GtbEtobsOYenibelge> cloneOnayStatu = new ArrayList<>(listOnayStatu);

Таким образом, вы создаете копию listOnayStatu.Кроме того, вам не следует больше полагаться на clone(), поскольку было подтверждено, что это было неправильное решение

0 голосов
/ 17 мая 2019

Вы можете попытаться сохранить его как новый массив.

List<GtbEtobsOYenibelge> listOnayStatu = new ArrayList<>();
List<GtbEtobsOYenibelge> cloneOnayStatu;
listOnayStatu = servis.listOnayStatus4Belge(user.getBirimId().getId());
cloneOnayStatu =  new ArrayList(listOnayStatu);

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

cloneOnayStatu.addAll(listOnayStatu);
0 голосов
/ 17 мая 2019

Метод servis.listOnayStatus4Belge возвращает Вектор . Vector реализует интерфейс List, но не является ArrayList. Поэтому вы не можете привести его к одному.

Глядя на проблемное утверждение:

cloneOnayStatu =  ((List) ((ArrayList) listOnayStatu).clone());

Вы копируете Вектор и присваиваете ему cloneOnayStatu. Вы должны быть в состоянии сделать это так:

cloneOnayStatu = (List<GtbEtobsOYenibelge>) ((Vector<GtbEtobsOYenibelge>)listOnayStatu).clone();

Вызов метода clone() вернет другой вектор, но объявленный тип возврата - Object. Поэтому вам нужно привести его в Список для назначения на работу.

Однако, clone() в наши дни мало используется. Вы можете лучше контролировать, какой вид List вы хотите получить, используя конструктор, например:

cloneOnayStatu = new ArrayList<>(listOnayStatu);
...