LINUX.ORG.RU

[JAVA] почему компайлер ругается???

 


0

0

Vector<Menge> Tkreis=(Vector<Menge>) tempV_f.clone();

на эту строчку компайлер ругается вот так:


Test.java:410: warning: [unchecked] unchecked cast
found : java.lang.Object
required: java.util.Vector<Menge>
Vector<Menge> Tkreis=(Vector<Menge>) tempV_f.clone();


что ему не нравится? помогите пожалусто...

★★

clone возвращает объект типа Object , так что все пучком, если преропределить clone то все будет еще пучковее.

wfrr ★★☆
()

Согласен с предыдущим оратором. Clone таки надо оверрайдить, ибо он клонирует нормально только простые типы (итны, флоаты и т.д.). Если в классе есть ццылки на объекты типа классы то для них надо в переопределенном clone явно вызывать метод clone, если они конечно поддерживают сию функциональность. И не забудь про интерфейс Clonable, каждый класс реализующий метод clone должен реализовывать упомянутый интерфейс.

cathode
()
Ответ на: комментарий от djung

Попробуй у Menge переопределить метод clone

wfrr ★★☆
()

Если нужно warning заглушить, то @SuppressWarnings("unchecked") на весь метод или только эту строчку. Переопределить clone() с дженериком, по-моему, не получится.

svr69 ★★
()
Ответ на: комментарий от svr69

Да, я поглядел в интерфейсе объявлен clone возвращающий Object, можно попробовать клонировать используя конструктор

Vector

public Vector(Collection<? extends E> c)

Constructs a vector containing the elements of the specified collection, in the order they are returned by the collection's iterator.

Возможно что в clone этот конструктор и и спользуется.

wfrr ★★☆
()
Ответ на: комментарий от wfrr

В этом случае не получится глубокого клонирования, т.к. новый вектор будет содержать ссылки на те же объекты. Тут уж проще сериализовать/десериализовать весь вектор (если особой производительности не надо).

svr69 ★★
()
Ответ на: комментарий от svr69

> @SuppressWarnings("unchecked")

Поддерживаю. Eclipse вообще сам это ctrl+1 предлагает, например.

meta-anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.