Публикации по теме 'effective-java'
Эффективная Java, ч. 4
Классы и интерфейсы
Пункт 15 «Сведите к минимуму доступность классов и членов»
Хорошо спроектированный компонент скрывает все детали своей реализации и отделяет свой API от своей реализации, поэтому компоненты взаимодействуют только через API.
Эта концепция известна как Инкапсуляция . Она важна, поскольку разделяет компоненты системы, обеспечивает параллельную разработку и позволяет оптимизировать или изменять компоненты, не затрагивая другие компоненты. Правило состоит в том, чтобы..
Эффективная Java, часть 3
Методы, общие для всех объектов
Хотя Object — это конкретный класс, он предназначен для расширения всех его нефинальных методов (equals, hashcode, toString и clone).
Пункт 10 «Соблюдайте генеральный контракт при переопределении равных»
Когда уместно переопределить equals? Это когда у класса есть понятие логического равенства, которое отличается от простой идентичности объекта, а суперкласс еще не переопределил равенство. В этом случае класс называется класс значения (класс,..
Эффективный Котлин: рассмотрите встроенный модификатор для функций высшего порядка
Эффективный Котлин: рассмотрите встроенный модификатор для функций высшего порядка
Вы могли заметить, что все функции обработки коллекции встроены. Вы когда-нибудь спрашивали себя, почему они определены таким образом? Вот, например, упрощенная функция filter из Kotlin stdlib:
inline fun <T> Iterable<T>.filter(predicate: (T)->Boolean): List<T>{
val destination = ArrayList<T>()
for (element in this )
if (predicate(element))..
Вопросы по теме 'effective-java'
Подпись Class.asSubclass
мой вопрос довольно теоретический ... Это подпись Class.asSubclass ( Javadoc ):
public <U> Class<? extends U> asSubclass(Class<U> clazz)
Почему в возвращаемом типе используются универсальные шаблоны с подстановочными...
1683 просмотров
schedule
03.10.2021
Разработка метода hashCode Java
Я изучаю Правило 9, Эффективная Java [Всегда переопределяйте hashcode (), когда переопределяете равно].
У меня есть несколько вопросов по поводу замечаний автора:
Автор говорит:
На шаге 1 используется ненулевое начальное значение, поэтому...
957 просмотров
schedule
22.10.2021
Шаблон построителя с несколькими varargs
Я читаю книгу Джошуа Блоха «Эффективная Java», где в пункте 2 он упоминает преимущества использования шаблона Builder при работе с несколькими параметрами в конструкторе. Все хорошо, пока я не увидел разницу во множестве var-args между обычным...
729 просмотров
schedule
22.08.2022
В чем разница между необработанными типами, неограниченными подстановочными знаками и использованием Object в дженериках
Я читаю главу об обобщениях в эффективной Java.
Помогите мне понять разницу между Set , Set<?> и Set<Object> ?
Следующий абзац взят из книги.
Вкратце: Set<Object> — это параметризованный тип, представляющий набор,...
2931 просмотров
schedule
16.03.2023
Понимание эффективных советов Java по документированию непроверенных исключений
Из эффективного Java " ДОКУМЕНТИРУЙТЕ ВСЕ ИСКЛЮЧЕНИЯ, ВЫБРАННЫЕ КАЖДЫМ МЕТОДОМ "
Следует отметить, что документирование всех непроверенных исключений, которые может генерировать каждый метод, является идеальным, но не всегда достижимым в...
290 просмотров
schedule
10.12.2022
Как можно использовать служебные классы для группировки методов в финальном классе вместо расширения класса?
Джошуа Блох упоминает в своей книге ( Effective Java — 2nd Ed ) в элементе 4 :
Классы, содержащие только статические поля и статические методы (служебные классы), можно использовать для группировки методов в финальном классе вместо расширения...
260 просмотров
schedule
17.07.2023
Использовать шаблон построителя для методов со многими параметрами?
Я прочитал рекомендацию в «Эффективной Java» использовать шаблон Builder, когда сталкиваюсь с конструкторами, использующими множество параметров.
Применяется ли тот же шаблон к методам с большим количеством параметров?
2381 просмотров
schedule
11.10.2023
Наборы и карты не параметризованы?
В первом абзаце книги Джоша Блоха «Эффективная Java's 29th Item» говорится, что
это контейнер, который параметризован
Разве автор не отбрасывает наборы и карты как параметризованные типы в соответствии с приведенным выше объявлением?
124 просмотров
schedule
20.01.2023
Java: почему класс, предназначенный для наследования, должен содержать защищенный метод клонирования?
Я внимательно читаю «Эффективную Java» (Джошуа Блох) и нашел следующее предложение о клонировании:
Если вы разрабатываете класс для наследования, имейте в виду, что если вы решите не предоставлять защищенный метод клонирования с хорошим...
181 просмотров
schedule
02.06.2023
Действующий элемент Java 16 (2-е издание). Используется ли класс Forwarding только для повторного использования?
Я прохожу через Effective Java, Item-16 Favor composition over inheritance . Я посмотрел на пример Forwarding class ниже.
Мне интересно, какой смысл иметь класс ForwardingSet ? InstrumentedSet может очень хорошо реализовать Set и иметь...
513 просмотров
schedule
23.01.2023
Открытому классу не рекомендуется напрямую раскрывать поля, но почему это менее вредно, если поля неизменяемы?
Я читаю статью из Эффективного Java, пункт 14. В общедоступных классах используйте методы доступа, а не общедоступные поля. В книге говорится: «Хотя общедоступный класс никогда не будет хорошей идеей напрямую раскрывать поля, это менее вредно, если...
85 просмотров
schedule
30.09.2023
Зачем нам нужен ограниченный подстановочный знак ‹? расширяет T› в методе Collections.max()
Я прочитал потрясающую книгу Джошуа Блоха «Эффективная Java». Но один пример в книгах остался для меня неясным. Это взято из главы о дженериках, точный пункт - "Пункт 28. Используйте ограниченные подстановочные знаки для повышения гибкости API" ....
1478 просмотров
schedule
01.12.2023
Группировка связанных констант, совместно используемых классами
В «Эффективной Java», пункт 17, Джош Блох утверждает, что помещение статических членов в интерфейс (и реализация этого интерфейса) — это плохая практика, известная как антишаблон константного интерфейса :
Постоянный шаблон интерфейса — это...
667 просмотров
schedule
08.12.2023