Публикации по теме 'effective-java'


Пункт 1. Эффективная Java рассматривает статические фабричные методы вместо конструкторов
В этой статье мы обсудим пункт 1 книги «Эффективная Java», рекомендованный Джошуа Блохом. Стандартный способ создать экземпляр класса — предоставить общедоступный конструктор, который вызывается при создании нового экземпляра. Однако существует альтернативный метод получения экземпляра класса, который иногда может быть более гибким, чем использование общедоступного конструктора. В следующем обсуждении мы рассмотрим оба способа, шаг за шагом подробно описывая преимущества и недостатки..

Эффективная версия Java 3, часть 2
Создание и уничтожение объектов Пункт 1 «Статический фабричный метод вместо конструктора» Пример статического фабричного метода public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } Преимущества: В отличие от конструкторов, у них есть имена Статические фабрики имеют имена для описания возвращаемого объекта, что лучше, чем наличие нескольких конструкторов с одинаковым именем объекта и разными параметрами (тщательно выбирайте имена)...

Рецензия на книгу: Эффективная Java — Thread Handler
Язык программирования Java — это, без сомнения, язык программирования, которым я больше всего пользовался в своей жизни. Это был основной язык программирования, который я использовал при получении степени бакалавра, и я также использовал его в большинстве своих профессиональных проектов. Хотя это больше не мой любимый язык (потому что Kotlin делает то же, что и Java, но лучше), одна из лучших технических книг, которые я читал, — Эффективная Java Джошуа Блоха. Как следует из..

Эффективная Java в Kotlin, устаревшие элементы благодаря Kotlin (элементы 3, 4, 16, 40, 61 из 3-го издания)
Эффективная Java в Kotlin, устаревшие элементы благодаря Kotlin (элементы 3, 4, 16, 40, 61 из 3-го издания) Kotlin - это огромное улучшение по сравнению с Java. Он был разработан, когда основные недостатки Java были уже известны, поэтому многие из них можно было решить раз и навсегда. Давайте обсудим некоторые моменты из Эффективной книги Java Джошуа Блоха, которые больше не применимы, поскольку мы используем Kotlin. Правило 3: принудительное применение свойства singleton с..

Эффективная Java
Лучшие практики для платформы Java Недавно я прочитал Эффективная Java от Джошуа Блоха , который предоставляет исчерпывающее руководство по передовой практике языка Java. В книге есть «Предметы» по главам с общей нумерацией. Это история о первой главе книги, то есть о введении. Эффективная Java разработана для того, чтобы быть доступной для всех, кто имеет практическое знание языка, она должна дать пищу для размышлений даже для продвинутых программистов. Вот некоторые..

Эффективная Java в Kotlin, пункт 7: Устранение устаревших ссылок на объекты
Эффективная Java в Kotlin, пункт 7: Устранение устаревших ссылок на объекты Программисты, выросшие на языках с автоматическим управлением памятью (таких как Java, в которой всю работу выполняет сборщик мусора [GC]), редко думают об освобождении объектов. Это приводит к утечкам памяти и в некоторых случаях OutOfMemoryError . Единственное наиболее важное правило - освободить неиспользуемый объект. Давайте посмотрим на пример из книги (перенесен на Kotlin), который представляет собой..

Вопросы по теме 'effective-java'

Добавление новых методов в суперклассы и вытекающие из этого проблемы -Вероятность?
Пункт 16 документа Effective Java 2nd edition, предпочтите композицию наследованию гласит следующее «Если суперкласс приобретает новый метод в следующем выпуске, а вам не повезло, что вы предоставили подклассу метод с той же сигнатурой и другим...
87 просмотров

классы, управляющие собственной памятью
Эффективная Java: Пункт 6: Исключите устаревшие ссылки на объекты. Вообще говоря, всякий раз, когда класс управляет своей собственной памятью, программист должен быть готов к утечке памяти. Всякий раз, когда элемент освобождается, любые ссылки...
188 просмотров
schedule 29.12.2022

Java: когда добавлять readObjectNoData() во время сериализации?
Я читаю главу о сериализации в Effective Java . Я пытаюсь понять абзац ниже, который находится в книге. Если вы реализуете класс с полями экземпляра, который является сериализуемым и расширяемым, следует помнить об одном предостережении. Если у...
6365 просмотров
schedule 29.03.2024

Почему изменчивое поле копируется в локальную переменную при двойной проверке блокировки
Я читаю о блокировке с двойной проверкой от Effective Java . Код делает следующее: private volatile FieldType field; FieldType getField() { FieldType result = field; if (result == null) { // First check (no locking)...
446 просмотров

Нужно ли делать все классы неизменяемыми?
Я читал Effective Java, и там написано Если класс нельзя сделать неизменяемым, максимально ограничьте его изменчивость... а также ...сделайте каждое поле окончательным, если нет веской причины сделать его не окончательным. Так...
640 просмотров
schedule 03.11.2023

Что значит сказать, что шаблоны int enum являются константами времени компиляции?
Это из эффективной Java Программы, использующие шаблон int enum, ненадежны. Поскольку перечисления int являются константами времени компиляции, они компилируются в клиенты, которые их используют. Может ли кто-нибудь объяснить, почему...
1195 просмотров

Эффективная Ява. Шаблон Serializable Builder (как добавить общедоступный конструктор без аргументов?)
Я хочу создать класс в стиле Джошуа Блоха, используя шаблон Builder. Но я хочу использовать этот класс как объект DTO и передать его из EJB. Поэтому он должен иметь общедоступный конструктор без аргументов. Как я могу достичь этого стиля java-bean...
2087 просмотров
schedule 10.06.2022

Что Джошуа Блох имеет в виду под экстралингвистическим?
Из этой статьи Artima о клонировании и конструкторе копирования : Метод клонирования объекта очень сложен. Он основан на полевых копиях и является «внеязыковым». Он создает объект без вызова конструктора. Нет никаких гарантий, что он...
606 просмотров
schedule 17.01.2023

Понимание примера эффективного глубокого копирования Java
В Effective Java, 2nd Edition, Item 11 можно найти следующий пример глубокого копирования: public class HashTable implements Cloneable { private Entry[] buckets = ...; private static class Entry { final Object key; Object...
3901 просмотров
schedule 12.07.2023

побитовый оператор ››› в hashCode
У меня два связанных вопроса: Побитовый оператор >>> означает, что мы сдвигаем двоичное число на это количество мест, заполняя 0 в наиболее значимом бите. Но тогда почему следующая операция дает то же число: 5 >>> 32 дает 5, а -5 >>> 32 дает...
3238 просмотров

Гетерогенный контейнер с двумя элементами одного типа
Я читаю Effective Java — пункт 29 . В нем говорится об гетерогенном контейнере в примере: private Map<Class<?>, Object> favorites = new HashMap<Class<?>, Object>(); public <T> void putFavirite(Class<T>...
537 просмотров
schedule 18.07.2023

Почему угловые скобки перед возвращаемым типом иногда опускаются в определении универсального метода
Я читал главу 5 Effective Java об дженериках, в частности, о предпочтениях универсальных методов. Я заметил, что иногда параметр типа (между угловыми скобками) в объявлении метода перед возвращаемым типом иногда опускается. Таких случаев много, но,...
1252 просмотров
schedule 14.01.2023

Java: почему не следует использовать clone() для защитного копирования?
В «Эффективной Java» (глава 7) говорится Также обратите внимание, что мы не использовали метод клонирования Дейта для создания защитных копий. Поскольку Date не является окончательным, метод clone не гарантирует возврат объекта класса...
1087 просмотров
schedule 30.12.2022

Можно ли автоматически генерировать код построителя в Eclipse в соответствии с шаблоном построителя?
Существует шаблон построителя, который был представлен Джошуа Блохом в его книге. Эффективная Java (2-е издание) , вы можете увидеть описание и примеры этого шаблона здесь: T oo Многие параметры в методах Java, часть 3: шаблон Builder Есть ли...
805 просмотров
schedule 08.07.2022

Каноническая форма поля
Я изучаю эффективную Java, пункт 8 (соблюдайте общий договор при переопределении равенства). Автор достаточно ясно объяснил, но некоторые моменты не так уж и проработаны. В этом примере он рассматривает класс CaseInsensitiveString, определенный...
757 просмотров

Проверка шаблона построителя - Эффективная Java
В пункте 2 книги «Эффективная Java» (2-е издание) автор упоминает следующее о наложении инвариантов на параметры при использовании Builders: Крайне важно, чтобы они проверялись после копирования параметров из построителя в объект и чтобы они...
12083 просмотров

Эффективный Java Item1 — статический фабричный метод для создания объекта
Я просматривал эффективный пункт 1 java, где обсуждается «Статический метод фабрики против конструкторов» для создания объекта. Одним из упомянутых недостатков является следующее: «Основной недостаток предоставления только статических фабричных...
506 просмотров

Эффективная Java: частный доступ clone()
В книге Блоха «Эффективная Java», 2-е издание, Пункт 11: Разумное переопределение клона содержит следующий пример: class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY =...
98 просмотров

Почему конструкторы javadoc без параметров?
В статье 56 «Эффективной Java» (третье издание) Джошуа Блох утверждает: «Общие классы не должны использовать конструкторы по умолчанию, потому что нет возможности предоставить для них комментарии к документам». Однако конструктор по умолчанию не...
1453 просмотров

Статический фабричный метод не работает
Начал читать "Эффективная Java" и не могу понять, почему у меня не работает, когда я пытаюсь написать пример.. Ошибка компиляции: Ошибка: (12, 16) java: конструктор Car в классе Car не может быть применен к заданным типам; public...
249 просмотров
schedule 02.12.2023