Какие функции Java исторически начинаются как шаблон и теперь являются языковой функцией?
Буду честным. Мне нужна помощь с вопросом о домашнем задании, с которым я столкнулся.
Опишите то, что исторически началось как шаблон и теперь поддерживается
языковая функция в Java.
Ответы
Ответ 1
Они, вероятно, ищут enum
s.
Прежде чем Java 1.5 представила поддержку языка для enum
s, стандартная практика заключалась в определении набора public static final int
в качестве значений перечисления.
Этот шаблон можно увидеть повсюду в Swing.
Многие из этих констант определены в интерфейсах, так что классы могут реализовать интерфейс и использовать константы без квалифицирующего имени; SwingConstants
- отличный пример.
Ответ 2
Самый очевидный образец, о котором я могу думать, это итерация через Iterable<T>
и Iterator<T>
, который теперь доступен как функция через расширенный для каждого цикла.
Ответ 3
Из http://en.wikipedia.org/wiki/Java_version_history: перечисления (типичный шаблон перечисления)
Подробнее об этом шаблоне в пункте 21 главы 5 "Эффективная Java" (найдено здесь: http://java.sun.com/developer/Books/effectivejava/Chapter5.pdf)
Ответ 4
Аннотации относятся к метаданным, которые использовались для хранения в различных файлах xml или в комментариях javadoc, теперь вы можете использовать аннотации для хранения метаданных с кодом.
Включение зависимостей - это еще один шаблон, который, хотя и не является частью языка java, проникает в основные рамки jdk.
Ответ 5
итераторов. У них есть специальный цикл, который преобразуется в вызовы hasNext() и next().
Ответ 6
Я бы предложил Generics. Это не было частью Java с самого начала, но было реализовано от 1,5 и выше.
Ответ 7
перечислений.........................
Ответ 8
Наблюдатель/Наблюдаемый, который является образцом "Наблюдателя [GOF]" от банды четырех...: http://www.exciton.cs.rice.edu/JavaResources/DesignPatterns/book/hires/pat5gfso.htm
Comparator<T>
, который является шаблоном "Стратегия [GOF]" также из группы из четырех: http://www.exciton.cs.rice.edu/JavaResources/DesignPatterns/book/hires/pat5ifso.htm
И еще много!
Ответ 9
Производительность.
Ответ 10
(К сожалению, извините. Всегда думал, что С++-шаблоны имеют какое-то отношение к шаблону. Я был не прав)
< < < < < Игнорируйте следующие строки → → >
Не уверен, что я прав, но позвольте мне сделать снимок.
Java Generics примерно основаны на шаблоне шаблона
http://blogs.msdn.com/b/csharpfaq/archive/2004/03/12/88913.aspx
(Ссылка на С# generics, хотя)
Ответ 11
Не было добавлено много функций language, которые появляются в JLS.
Возможно, вы могли бы утверждать, что @Override поддерживает шаблон переопределяющих/реализующих методов, обнаруживая, когда метод был включен, чтобы переопределить родительский метод/реализовать метод интерфейса, но не делает.
http://java.sun.com/docs/books/jls/third_edition/html/interfaces.html искать @Override
Ответ 12
Я заметил, что никто не упоминал Prototype (клон) и Momento (Serializable).