Публикации по теме '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 просмотров

В чем разница между необработанными типами, неограниченными подстановочными знаками и использованием 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 просмотров

Зачем нам нужен ограниченный подстановочный знак ‹? расширяет T› в методе Collections.max()
Я прочитал потрясающую книгу Джошуа Блоха «Эффективная Java». Но один пример в книгах остался для меня неясным. Это взято из главы о дженериках, точный пункт - "Пункт 28. Используйте ограниченные подстановочные знаки для повышения гибкости API" ....
1478 просмотров
schedule 01.12.2023

Группировка связанных констант, совместно используемых классами
В «Эффективной Java», пункт 17, Джош Блох утверждает, что помещение статических членов в интерфейс (и реализация этого интерфейса) — это плохая практика, известная как антишаблон константного интерфейса : Постоянный шаблон интерфейса — это...
667 просмотров
schedule 08.12.2023