Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 18.08.2018
Сообщений: 4
1

Почему клонирование не работает с интерфейсом

18.08.2018, 17:17. Показов 1264. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот первый вариант, который работает:

Java
1
2
3
4
5
6
7
8
9
10
11
        HashSet<String> newset = new HashSet(); // creating two hash sets
        HashSet<String> cloneset = new HashSet();
 
        newset.add("Kingsley");
        newset.add("Ram"); // adding hashset values
        newset.add("Pradeep");
 
        cloneset = (HashSet) newset.clone(); // cloning the hash set
 
        System.out.println("Hash set values: " + newset);
        System.out.println("Cloned Hash set values: " + cloneset);
Второй вариант не работает:

Java
1
2
3
4
5
6
7
8
9
10
11
        Set newset<String> = new HashSet(); // creating two hash sets
        Set cloneset<String> = new HashSet();
 
        newset.add("Kingsley");
        newset.add("Ram"); // adding hashset values
        newset.add("Pradeep");
 
        cloneset = (HashSet) newset.clone(); // cloning the hash set
 
        System.out.println("Hash set values: " + newset);
        System.out.println("Cloned Hash set values: " + cloneset);
Почему мы не можем использовать второй вариант? Почему используя интерфейс мы не можем на объекте HashSet вызвать метод clone()?
И вообще если у меня есть например интерфейс A и класс который его имплементирует например B implements A то чем я должен руководствоваться выбирая один из ниженаписанных способов создания объекта класса В?

Java
1
2
3
4
5
//when I need versio1 and when I need version2
 
A version1 = new B();
 
B version2 = new B();
Спасибо за ссылки и пояснения
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.08.2018, 17:17
Ответы с готовыми решениями:

Глубокое клонирование объектов не работает
Всем привет. Я на этапе обучения, дошел вот до темы с объектами, увидел пример с клонированием, и...

Почему окна создаются с разным интерфейсом
Почему некоторые окна сознаются с нормальным интерфейсом, ну под Windows XP, а некоторые как в 98,...

Не работает программа с интерфейсом
Ребята помогите с интерфейсом вроде все сделал но не работает может что не написал я в...

Не работает жесткий диск с интерфейсом IDE
Жесткий диск SamsungSPO2800N, раньше работал нормально, потом стал работать через пень-колоду, то...

5
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
18.08.2018, 17:45 2
Цитата Сообщение от anovik00 Посмотреть сообщение
Почему клонирование не работает с интерфейсом
Вы же не можете создать экземпляр интерфейса?!
0
0 / 0 / 0
Регистрация: 18.08.2018
Сообщений: 4
18.08.2018, 17:58  [ТС] 3
ViktorFX, но переменную типа интерфейса, которая ссылается на объект класса реализующий этот интерфес мы можем создать.
Java
1
Set newset<String> = new HashSet();
данная строка кода не вызовет ошибок.
0
Автоматизируй это!
Эксперт Python
7107 / 4610 / 1215
Регистрация: 30.03.2015
Сообщений: 13,236
Записей в блоге: 29
18.08.2018, 18:00 4
Лучший ответ Сообщение было отмечено anovik00 как решение

Решение

anovik00, потомучто у интерфейса Сет нет метода клон, он имеет протектед статус в Обджекте, то есть только наследники Обджекта могут его вызывать. Как вариант приводить к хешсету, клонировать и результат тоже приводить
Java
1
cloneset =(HashSet) ((HashSet) newset).clone(); // cloning the hash set
2
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
18.08.2018, 18:02 5
Цитата Сообщение от anovik00 Посмотреть сообщение
...которая ссылается на объект класса реализующий этот интерфес..
по моему она ссылается как раз на интерфейс.
0
0 / 0 / 0
Регистрация: 18.08.2018
Сообщений: 4
18.08.2018, 18:10  [ТС] 6
Welemir1, все понял, спасибо, тема закрыта
0
18.08.2018, 18:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.08.2018, 18:10
Помогаю со студенческими работами здесь

USB порт не корректно работает с аудио интерфейсом
Здравствуйте! Приобрел звуковую карту Focusrite 2i2 usb и при подключение её к USB 2.0 выдает, что...

Композитное приложение не работает в клиенте с русским интерфейсом
Композитное приложение не работает в клиенте с русским интерфейсом Ошибка: ReferenceError: XSP is...

Как foreach определяет что работает с интерфейсом а не с чем-либо другим?
Задали вопрос,как foreach определяет что работает с интерфейсом а не с чем-либо другим? Я...

Почему смена текста работает только один раз? Что неправильно в коде и почему?
Нужно чтобы при щелчке мыши на поверхности кнопки текст метки Label изменялся на текст окна...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru