Я заметил, что в Java 7 классы коллекции (ConcurrentLinkedQueue в моем случае) используют класс UNSAFE для операций свопинга и поиска.
Смещение кажется, рассчитывается по времени компиляции декларации:Использование UNSAFE в коллекциях
itemOffset = UNSAFE.objectFieldOffset(local.getDeclaredField("item"));
Как это будет работать в случае, когда мы не имеем точного параметризованную типа во время компиляции, например, при попытке вставить яблоко в к метод, содержащий Collection<? super Apple>
в декларации.
Использует ли это «Apple» как объявленный класс для вычисления смещения?
Поблагодарите любую помощь в понимании того, как UNSAFE работает для расчета смещений здесь.