В Java люди часто определяют интерфейс вместе с классом и используют имя интерфейса вместо имени класса, где это возможно, чтобы позже можно было реализовать новые реализации. Здесь дублируется логический интерфейс.
Такое дублирование «на всякий случай» не было бы необходимо, если бы Java позволяла использовать класс в качестве интерфейса, например: class MyScanner расширяет MyStuff реализует java.util.Scanner. Также это облегчит ситуацию, когда мне нужно предоставить тип класса, но я не хочу расширять этот класс.
Как я понимаю, «реализация класса» было бы отклонено не только компилятором, но и JVM (если бы я взломал это объявление в файле классов). Есть ли какие-то технические трудности с этим или это не является важным моментом? Это не похоже на проблему обратной совместимости (я имею в виду, что старый код работал бы нормально, если бы JVM поддерживала это).
РЕДАКТИРОВАТЬ: для пояснения я скопирую сюда Гораздо лучшая формулировка тех же вопросов в StriplingWarrior: Почему класс не может «реализовать» контракт метода другого класса без фактического расширения этого класса? Это техническая проблема? Сможет ли это каким-то образом открыть для нас некоторые проблемы, которые ФП не может предвидеть?
Подробнее здесь: https://stackoverflow.com/questions/469 ... ss-in-java
Почему я не могу написать «реализует AClass» на Java? ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1731775768
Anonymous
В Java люди часто определяют интерфейс вместе с классом и используют имя интерфейса вместо имени класса, где это возможно, чтобы позже можно было реализовать новые реализации. Здесь дублируется логический интерфейс.
Такое дублирование «на всякий случай» не было бы необходимо, если бы Java позволяла использовать класс в качестве интерфейса, например: class MyScanner расширяет MyStuff реализует java.util.Scanner. Также это облегчит ситуацию, когда мне нужно предоставить тип класса, но я не хочу расширять этот класс.
Как я понимаю, «реализация класса» было бы отклонено не только компилятором, но и JVM (если бы я взломал это объявление в файле классов). Есть ли какие-то технические трудности с этим или это не является важным моментом? Это не похоже на проблему обратной совместимости (я имею в виду, что старый код работал бы нормально, если бы JVM поддерживала это).
РЕДАКТИРОВАТЬ: для пояснения я скопирую сюда Гораздо лучшая формулировка тех же вопросов в StriplingWarrior: Почему класс не может «реализовать» контракт метода другого класса без фактического расширения этого класса? Это техническая проблема? Сможет ли это каким-то образом открыть для нас некоторые проблемы, которые ФП не может предвидеть?
Подробнее здесь: [url]https://stackoverflow.com/questions/4696528/why-i-cant-write-implements-aclass-in-java[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия