Описание тега effective-java

"Эффективная Java" - это книга Джошуа Блоха, "призванная помочь программистам на Java наиболее эффективно использовать язык программирования Java и его фундаментальные библиотеки".
6 ответов

Что такое ошибка AssertionError? В каком случае я должен выбросить это из моего собственного кода?

В пункте 2 книги "Effective Java, 2nd edition" приведен фрагмент кода, в котором автор хочет запретить пустую инициализацию объекта. class Example { private Example() { throw new AssertionError(); } } Тип исключений, вот что меня смущает здесь. Я не…
21 июл '14 в 10:43
4 ответа

Способ расширить инстанцируемый класс и добавить компонент значения, сохраняя контракт равных

Эффективная Java от Джошуа Блоха утверждает: Нет никакого способа расширить инстанцируемый класс и добавить компонент значения, сохраняя equals контракт, если вы не готовы отказаться от преимуществ объектно-ориентированной абстракции. Эффективная Ja…
22 июн '13 в 07:32
2 ответа

Пункт 9 (равнозначный контракт) из Effective Java: пример верный?

Замечательная книга Блоха "Эффективная Ява" указывает, что если equals не симметрично, то поведение коллекций contains является неопределенным. В приведенном им примере (воспроизведенном с небольшими изменениями ниже) Блох говорит, что он видит "лож…
22 сен '11 в 14:07
2 ответа

BigDecimal является расширяемым и не имеет конструктора копирования. Это угроза безопасности?

Согласно пункту 24 действующего Java (создание защитных копий при необходимости) изменяемые объекты представляют угрозу безопасности, особенно когда они передаются в качестве аргументов конструктора. Рекомендуется делать защитные копии по мере необх…
20 фев '18 в 05:22
3 ответа

Почему неизменяемая новая строка ("рыба")!= Новая строка ("рыба")?

Я помню, как читал раздел, возможно, в " Эффективной Java" Блоха, где говорилось, что в большинстве случаев, где String a = "fish"; String b = "fish"; что a == b в большинстве случаев, потому что строки неизменны. Но из-за временного построения объе…
20 окт '11 в 21:39
2 ответа

Почему Джошуа Блох уменьшил значение "size" стека в методе pop в эффективной java?

Вот код из пункта 6, стр. 24, глава 2 эффективного издания Java, 2-го издания Джошуа Блоха. В методе поп он определяет, он использует elements[--size], Мне интересно, почему он использовал --sizeвместо elements[size--] должен вернуть такой же правил…
27 сен '13 в 18:39
5 ответов

Разработка метода hashCode Java

Я изучаю пункт 9, Эффективная Java [Всегда переопределять hashcode(), когда вы переопределяете equals]. У меня есть несколько вопросов относительно замечаний автора: Автор говорит: На этапе 1 используется ненулевое начальное значение, поэтому на зна…
01 дек '15 в 07:13
2 ответа

Недостаток JavaBean - несовместим при создании

Эффективная Java - состояния Item-2, JavaBean может находиться в несогласованном состоянии в процессе своего построения. Я не мог понять это, если объект создается в методе, как это может быть противоречивым, если исключение должно произойти, что м…
19 апр '14 в 12:01
6 ответов

Почему readObject и writeObject являются частными и почему я должен записывать переходные переменные явно?

Я читаю главу о сериализации в эффективной Java. Кто вызывает readObject() и writeObject()? Почему эти методы объявлены закрытыми? Ниже приведен фрагмент кода из книги // StringList with a reasonable custom serialized form public final class StringL…
19 сен '11 в 06:42
3 ответа

Эффективная Java. Клонируемый интерфейс

Я читаю книгу "Эффективная Java" и не понимаю ни одного абзаца, где объясняется интерфейс Clonable. Может кто-нибудь объяснить мне этот пункт: ... программисты предполагают, что если они расширяют класс и вызывают super.clone из подкласса возвращаем…
25 июл '12 в 16:16
2 ответа

Что значит сказать, что шаблоны int enum являются константами времени компиляции?

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

Почему публичный статический финальный массив является дырой в безопасности?

Эффективный Java говорит: // Потенциальная дыра в безопасности! static public final Thing [] VALUES = {...}; Может кто-нибудь сказать мне, что такое дыра в безопасности?
16 май '10 в 00:12
4 ответа

Что значит сказать, что список внутренне заблокирован?

Этот код из книги Эффективная Java Object[] snapshot = list.toArray();// Locks list internally Я в основном заинтересован в комментарии здесь. Это делает список unmodifiable? Что значит сказать, что список внутренне заблокирован? Как долго хранится …
2 ответа

Что означает "Связанный с рекурсивным типом" в Generics?

Я читаю главу "Обобщения с эффективной Java" [пункт 27]. В книге есть этот параграф: Допустимо, хотя и относительно редко, чтобы параметр типа был ограничен каким-либо выражением, включающим сам параметр этого типа. Это то, что известно как рекурсив…
12 сен '11 в 09:45
3 ответа

Использование автоматически сгенерированного идентификатора объекта hibenate в методах equals и hashcode

Прекрасные равные и хэш-код, вся теория здесь, а также здесь Я принял решение использовать автоматически сгенерированный идентификатор в пределах equals() и hashcode() в ряде моих спящих объектов сущности / домена. Тем не менее, некоторые веб-сайты …
28 сен '11 в 06:59
1 ответ

Каноническая форма поля

Я изучаю Эффективную Java, Пункт 8 (Соблюдайте общий контракт, когда переопределение равно). Автор объяснил это довольно четко, но все же некоторые части не настолько проработаны. В этом примере он рассматривает класс CaseInsensitiveString, определе…
30 ноя '15 в 05:33
1 ответ

Java: почему класс, предназначенный для наследования, должен содержать защищенный метод клонирования?

Я внимательно читаю "Эффективную Java" (Джошуа Блох) и нашел следующее предложение о клонировании: Если вы разрабатываете класс для наследования, имейте в виду, что если вы решите не предоставлять хорошо защищенный метод клонирования, для подклассов…
13 ноя '17 в 22:41
3 ответа

Как кэширующий хэш-код работает в Java, как это предложил Джошуа Блох в эффективной Java?

У меня есть следующий фрагмент кода из эффективной Java от Джошуа Блоха (пункт 9, глава 3, страница 49) Если класс является неизменным и стоимость вычисления хеш-кода значительна, вы можете рассмотреть кэширование хеш-кода в объекте, а не пересчитыв…
27 авг '13 в 18:39
6 ответов

Почему этот общий вызов метода не работает?

Следующий код взят из книги Effective Java: Set<Integer> integers = ... ; Set<Double> doubles = ... ; Set<Number> numbers = union(integers, doubles); Этот код не компилировался, и автор предлагает обойти эту проблему, сообщив компи…
26 фев '13 в 17:48
4 ответа

Условия хранения Java по универсальному типу

Я читал "Эффективную Java" и решил попробовать применить кое-что из того, что я изучил. Я пытаюсь эффективно создать Multimap<?, Condition<?> > где подстановочный знак будет одинакового типа как для ключа, так и для значения, но это буду…
16 ноя '10 в 14:01