Мы изучили Ваше коммерческое предложение по разработке информационной системы и приняли решение приобрести некоторое количество травы, которую вы курите.
Кому как. Мне, например, принудительная группировка писем в обсуждения не нужна совершенно, но отключить ее в gmail не получается. Простого UI к почте для «телефонных» браузеров больше нет. Ну а IMAP-сервис и gtalk вообще регулярно уходят куда-то в астрал.
Во-первых, если язык не поддерживает value-типы, то вместо массива объектов получается массив ссылок на объекты, раскиданные по всему хипу.
Во-вторых, иногда нужно выполнять какую-то операцию над значением конкретного поля сразу у кучи объектов. В таком случае параллельные массивы эффективнее. Кроме того, при итерации по двум массивам процессор может выделить под это дело не одну, а две строки n-way-кэша.
Вдогонку к предыдущему комментарию:
(Notion of subsignature) allows a method whose signature does not use generic types to override any generified version of that method. А с MyClass получается наоборот — мы пытаемся generified-версией метода переопределить raw-версию.
Вроде все нормально. В 8.4.2 приводится пример наследования от обыкновенного, не-raw-типа с generic-методом. В посте — наследование от raw-типа со стертыми сигнатурами всех методов.
Ну да, так и есть. По сути, тут наследование не от исходного BaseClass, а от другого, raw-типа со стертыми параметрами. В raw-классе параметры типов стираются еще и у его собственных методов, полей и конструкторов. Поэтому абстрактный метод в этом raw-типе выглядит как test(Class clazz), и реализовывать надо именно такой метод.
Насчет обратной совместимости — тоже правильно, эту упячку придумали для того, чтобы можно было параметризовывать старый код, не затрагивая клиентов этого кода.
The type of a constructor (§8.8), instance method (§8.8, §9.4), or non-static field (§8.3) M of a raw type C that is not inherited from its superclasses or superinterfaces is the erasure of its type in the generic declaration corresponding to C.
Мне все эти действия по обслуживанию системы напоминают шаманизм и пляски с бубном: у неопытного пользователя происходит Зависон, он списывает все на вирусы и глюки мастдая и начинает все подряд Оптимизировать, Дефрагментировать и Чистить. Хотя конкретная проблема часто устраняется за 5 минут.
Ну пользователи же умные, сами что-нибудь придумают. Вот, О'Рейли уже статьи пишет.
Во-вторых, иногда нужно выполнять какую-то операцию над значением конкретного поля сразу у кучи объектов. В таком случае параллельные массивы эффективнее. Кроме того, при итерации по двум массивам процессор может выделить под это дело не одну, а две строки n-way-кэша.
(Notion of subsignature) allows a method whose signature does not use generic types to override any generified version of that method. А с MyClass получается наоборот — мы пытаемся generified-версией метода переопределить raw-версию.
Насчет обратной совместимости — тоже правильно, эту упячку придумали для того, чтобы можно было параметризовывать старый код, не затрагивая клиентов этого кода.
The type of a constructor (§8.8), instance method (§8.8, §9.4), or non-static field (§8.3) M of a raw type C that is not inherited from its superclasses or superinterfaces is the erasure of its type in the generic declaration corresponding to C.