Общие вопросы
Смешанные вопросы по Java.
Открыть разделБаза Hintsage
Язык Java, JVM и экосистема серверной разработки.
Темы раздела
Смешанные вопросы по Java.
Открыть разделБазовая семантика языка, типы, методы, классы и ключевые конструкции.
Открыть разделНаследование, полиморфизм, интерфейсы, классы и разрешение методов.
Открыть разделJava Collections Framework, контракты, реализации и сложность операций.
Открыть разделJava Memory Model, потоки, синхронизация и java.util.concurrent.
Открыть разделЗагрузка классов, память JVM, GC, JIT и диагностика.
Открыть разделПараметризация типов, bounds, wildcards и стирание типов.
Открыть разделФункциональные интерфейсы, streams, collectors и параллельная обработка.
Открыть разделИерархия исключений, обработка ошибок и управление ресурсами.
Открыть разделПрактика
При загрузке нового подкласса ранее скомпилированный вызов метода начинает выполняться медленнее. Как JVM сохраняет корректность такой оптимизации?
Что означает целевой бюджет паузы у G1 и почему его превышение не доказывает неисправность JVM?
Как стирание типов влияет на возможность создать массив параметризованного типа в Java?
Какую нижнюю границу wildcard выбрать, чтобы метод безопасно добавлял Integer в коллекцию Integer или его супертипа?
Как компилятор обрабатывает неизвестный параметр типа коллекции, из которой разрешено читать, но нельзя добавлять произвольное значение?
Какой риск возникает при передаче параметризованной коллекции в API, принимающий raw-тип?
При проверке объекта через instanceof какие формы параметризованных типов Java разрешает использовать после стирания типов, а какие отвергает компилятор?
Объясните, почему параметризованный класс нельзя сделать наследником Throwable в Java.
Разберите, почему параметризованный varargs в Java может привести к загрязнению кучи даже при предупреждении компилятора.
В сравнении с наследованием самих типов почему параметризация Java остаётся инвариантной, даже когда один аргумент типа является подтипом другого?
Объясните ограничение: почему статический член обобщённого класса не может напрямую использовать параметр типа этого класса?
Каким образом компилятор сохраняет переопределение обобщённого метода после стирания типов?
Представьте параметр типа с несколькими верхними границами: почему граница-класс должна указываться первой?
Как верхняя граница параметра типа влияет на его стирание и доступные операции внутри обобщённого кода?
За счёт чего целевой тип присваивания может влиять на вывод параметра типа обобщённого метода?
Объясните механизм захвата wildcard, благодаря которому метод может безопасно переставлять элементы коллекции с неизвестным параметром типа.
Разберите, почему компилятор отвергает точное описание типа коллекции через Class, хотя объект создан с параметром String:
import java.util.ArrayList;
class Demo {
static Class<?> runtimeType = new ArrayList<String>().getClass();
static Class<ArrayList<String>> preciseType = new ArrayList<String>().getClass();
}
В каком случае рекурсивная верхняя граница параметра типа позволяет обобщённому API сохранить конкретный тип наследника при цепочке вызовов?
Что именно о параметризации обобщённого типа можно узнать через reflection после стирания типов, а что недоступно во время выполнения?
Как трактуется параметр типа метода, если он носит то же имя, что и параметр окружающего обобщённого класса?
Показано 261–280 из 403