Как называется "интерпретация ссылки на объект как ссылки на базовый тип"?
Anonymous Quiz
26%
Нисходящее преобразование
33%
Восходящее преобразование
6%
Свободное преобразование
34%
Полиморфизм
👍13👎4
Какой результат будет получен после компиляции и выполнения данного кода?
Anonymous Quiz
10%
a test A
17%
a test B
6%
b test A
42%
b test B
4%
b test A test B
5%
Ошибка выполнения
16%
Ошибка компиляции
🔥19⚡1
Перечислите методы класса java.lang.Object
Этот вопрос используется, как способ начать разговор – по большинству методов можно уйти в обсуждении далеко вглубь. В первую очередь важно запомнить сигнатуры – не зная ответов на вопросы по этим методам, можно будет хотя бы рассуждать отталкиваясь от них. Также полезно открыть исходник и внимательно прочитать javadoc-документацию. Поступим как на интервью, и далее рассмотрим каждый из методов детально. Их список:
1.
Этот вопрос используется, как способ начать разговор – по большинству методов можно уйти в обсуждении далеко вглубь. В первую очередь важно запомнить сигнатуры – не зная ответов на вопросы по этим методам, можно будет хотя бы рассуждать отталкиваясь от них. Также полезно открыть исходник и внимательно прочитать javadoc-документацию. Поступим как на интервью, и далее рассмотрим каждый из методов детально. Их список:
1.
public final native Class<?> getClass()
2. public native int hashCode()
3. public boolean equals(Object obj)
4. protected native Object clone() throws CloneNotSupportedException
5. public String toString()
6. public final native void notify()
7. public final native void notifyAll()
8. public final native void wait(long timeout) throws InterruptedException
9. public final void wait(long timeout, int nanos) throws InterruptedException
10. public final void wait() throws InterruptedException
11. protected void finalize() throws Throwable👍19🔥2👎1
Какой результат выполнения данной части кода?
Anonymous Quiz
12%
1
61%
2
4%
Ошибка времени выполнения
23%
Ошибка компиляции
👍19
getClass
Возвращает класс этого экземпляра. То есть результатом вызова
Подробнее об этом читайте на хабре.
Возвращает класс этого экземпляра. То есть результатом вызова
.getClass() переменной типа Foo может быть как Foo.class, так и .class любого из его подклассов. Компилятор страхуется от ClassCastException в рантайме подменой возвращаемого типа метода на Class<? extends Foo>.Подробнее об этом читайте на хабре.
👍11🔥2👎1
equals, hashCode
Эти два метода придуманы для использования в Java Collections Framework и связаны общим контрактом, для соблюдения которого переопределять их необходимо вместе. Методы обязательно нужно переопределить чтобы эффективно использовать экземпляры как ключи в HashMap или
Контракт:
1. Если объекты
2.
3. Ничто не может быть
По умолчанию
Подробная инструкция по переопределению этих методов описана в Effective Java Item 9 (больше деталей о волшебном числе 31 здесь).
Эти два метода придуманы для использования в Java Collections Framework и связаны общим контрактом, для соблюдения которого переопределять их необходимо вместе. Методы обязательно нужно переопределить чтобы эффективно использовать экземпляры как ключи в HashMap или
HashSet. HashMap работает тем эффективнее, чем «лучше» распределение хэшей.Контракт:
1. Если объекты
equals, у них должны быть одинаковые hashCode (не обязательно наоборот – коллизии допустимы!)2.
equals должен быть отношением эквивалентности3. Ничто не может быть
equals(null)
4. equals и hashCode должны возвращать одни и те же значения для одного и того же объекта при каждом последующем вызове, даже если состояние объекта изменилось. Это делает реализацию для изменяемых (mutable) объектов крайне сложной. По умолчанию
equals сравнивает на ==. С умолчательным hashCode дела обстоят интереснее: он зависит от реализации JVM, и может быть неожиданным. Например в OpenJDK 7 это случайное число. Подробная инструкция по переопределению этих методов описана в Effective Java Item 9 (больше деталей о волшебном числе 31 здесь).
👍9👎3🔥1
Даны следующие классы:
Anonymous Quiz
5%
Исключение RuntimeException.
59%
Исключение ClassCastException.
19%
Успешный запуск и отработка.
17%
Ошибка компиляции.
👍15🔥6🍌1