Создать часть вектора в Java - PullRequest
0 голосов
/ 25 августа 2011

у меня есть Vector< MyClass > myvector;с размером 0 - 400, и я хотел бы, чтобы мой метод возвращал новый вектор с позициями 0-100, если существует.Но мой код:

return (Vector< MyClass >) myvector.sublist( 0, Math.min(myvector.size,100) );

падает на обратной линии.

ERROR/AndroidRuntime(2053): java.lang.ClassCastException: java.util.Collections$SynchronizedRandomAccessList

Что я делаю не так?как я могу это исправить?

Заранее спасибо

Ответы [ 4 ]

4 голосов
/ 25 августа 2011

Vector<MyClass>.subList() возвращает List<MyClass>.List<MyClass> не может быть преобразовано в Vector<MyClass>.

Часто предлагается, чтобы вы, по возможности, работали со ссылками на типы интерфейсов, а не ссылками на конкретные типы.Следование этому совету позволяет избежать такого рода загадок.

3 голосов
/ 25 августа 2011

Возвращаемый тип Vector.subList не обязательно относится к классу Vector, а скорее к реализации List. Вы можете решить эту проблему:

return new Vector<MyClass>(myvector.subList(0, Math.min(myvector.size(), 100)));

Редактировать: Спасибо Степану и Стиву за то, что они отметили ненужные условные выражения.

2 голосов
/ 25 августа 2011

Sublist возвращает список, если вы хотите сделать это, вы должны будете сделать это:

new Vector(myList);
1 голос
/ 25 августа 2011

потому что подсписок возвращает список, а не вектор

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