Лучшие type-erasure вопросы ИТ разработчиков

  • 220 голосов
  • 7 ответов
  • 0 просмотров
7 ответов

Стирание типа дженериков Java: когда и что происходит?

Я читал о стирании типов Javaна сайте Oracle.Когда происходит стирание типа? Во время компиляции или во время выполнения? Когда класс загружается? Когда буде...

Задан 04 Dec 2008, 06:13 от afryingpan
  • 17 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

 это ошибка. Тип удалителя является частью типа интеллектуального указателя.

rasure - так ты это называешь? Какboost::shared_ptr хранит его удалитель и какboost::function хранит свой функциональный объект? Есть ли учебник, который учит трюк? Какова стоимость использования функциональных объектов со стертыми типами ...

Задан 12 Jun 2011, 21:11 от pic11
  • 10 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

Отличный ответ, спасибо!

го слышал о разных языках JVM, все еще в режиме «испаритель», которые предлагают как-то реализовать реификацию. У меня есть эта нытье наполовину запомнившаяся (или полностью воображаемая, не знаю какая) мысль, что где-то я читал, что ...

Задан 05 Aug 2011, 01:48 от Nathan Hughes台湾不在中国
  • 62 голосов
  • 0 ответов
  • 0 просмотров
0 ответов

Класс является необработанным типом. Ссылки на универсальный тип Class <T> должны быть параметризованы

У меня есть следующий класс (из простого учебника Spring) public class CarValidator implements Validator { public boolean supports(Class aClass) { return Car.class.equals(aClass); } public void validate(Object obj, Errors errors) { Car car = ...

Задан 03 Sep 2009, 10:14 от user167768
  • 9 голосов
  • 0 ответов
  • 0 просмотров
0 ответов

Сопоставление с шаблоном на основе ClassTag не выполняется для примитивов

Я думал, что следующее будет наиболее краткой и правильной формой для сбора элементов коллекции, которые удовлетворяют данному типу: def typeOnly[A](seq: Seq[Any])(implicit tag: reflect.ClassTag[A]): Seq[A] = seq.collect { case tag(t) => t }Но ...

Задан 30 May 2013, 00:10 от 0__
  • 2 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

@pirho Вы правы

оложим, у меня есть метод @SuppressWarnings("unchecked") public <T extends Number> T getNumber() { try { return (T)number; } catch (ClassCastException e) { return null; } }Если предположить,number является примеромIntegerвызывая метод ...

Задан 29 Nov 2017, 08:51 от pirho
  • 11 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

Примером этого является использование boost :: mpl :: identity <T> в c ++ для различения на основе типа, упрощения выбора имен функций и разрешения общей реализации.

я есть FinancialRequests и CommisionTransactions в моем домене. Если у меня есть список запросов на финансирование, каждый запрос на финансирование может содержать несколько транзакций CommisionTransaction, которые необходимо вернуть обратно. Не ...

Задан 26 Aug 2011, 07:13 от n4rzul
  • 23 голосов
  • 5 ответов
  • 0 просмотров
5 ответов

Почему не вся информация о типах стирается в Java во время выполнения?

Мое явно неправильное понимание Java Generics было до сих пор, что Type Erasure удаляет всю информацию о типах так, что во время выполнения ничего не остаетс...

Задан 23 Feb 2010, 18:21 от Lars
  • 13 голосов
  • 0 ответов
  • 0 просмотров
0 ответов

Java: getClass () ограниченного типа

Я кое-что заметил, пока дурачился с дженериками. В приведенном ниже примереdoStuff1 компилирует ноdoStuff2 нет: public <T extends Foo> void doStuff1(T value) { Class<? extends Foo> theClass = value.getClass(); } public <T extends Foo> void ...

Задан 09 Aug 2013, 10:22 от Smallhacker
  • 6 голосов
  • 4 ответа
  • 0 просмотров
4 ответа

 это проблема, которую вам, возможно, придется решить в будущем.

отаю над проектом, который имеет обширное дерево общего наследования и зависимостей. Перейти к редактированию, чтобы увидеть лучший пример.Основы выглядят примерно так: class A { ... } class B { ... } class C extends B { ... } class D<T extends ...

Задан 20 Jan 2011, 18:32 от unholysampler
  • 7 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

Перегрузка универсальных обработчиков событий в Scala

Если я определю следующий общий обработчик событий trait Handles[E <: Event] { def handle(event: E) }с типом события, как это trait Event { } class InventoryItemDeactivated(val id: UUID) extends Event; class InventoryItemCreated(val id: UUID, ...

Задан 20 Dec 2011, 21:54 от Lars Tackmann
  • 3 голосов
  • 1 ответ
  • 0 просмотров
1 ответ

Тип Erasure в Scala

Задан 25 Jul 2016, 14:49 от linkhyrule5
  • 16 голосов
  • 0 ответов
  • 0 просмотров
0 ответов

Почему универсальный необработанный класс Java стирает все обобщенные объекты, если параметры типа не определены? [Дубликат]

На этот вопрос уже есть ответ здесь: Объединение необработанных типов и общих методов [/questions/11007723/combining-raw-types-and-generic-methods] 5 ответовПочему этот общий код Java не ...

Задан 19 Jul 2013, 10:04 от Xenoprimate
  • 5 голосов
  • 0 ответов
  • 0 просмотров
0 ответов

Scala: перекрестное (декартово) произведение с несколькими источниками и разнородными типами

Я пытаюсь построить несколько перекрестных произведений различных типов (но каждый однородный). Желаемый тип возвращаемого значения - это обход кортежа с типом, совпадающим с типами во входных обходных путях. Например: List(1, 2, 3) cross ...

Задан 25 Apr 2013, 16:00 от bluenote10
  • 125 голосов
  • 6 ответов
  • 0 просмотров
6 ответов

 в указателе функции приведите его и сохраните в функторе только одного типа:

стиранием типов я имею в виду скрытие некоторой или всей информации о типах, относящихся к классу, что-то вродеBoost.Any [http://www.boost.org/doc/libs/1_46_0/doc/html/any.html].) Я хочу овладеть техниками стирания типов, а также поделиться теми, ...

Задан 27 Mar 2011, 15:19 от Xeo
  • 12 голосов
  • 5 ответов
  • 0 просмотров
5 ответов

стирание типа Java стирает мой общий тип?

Я думал, что стирание java стирает универсальные типы во время компиляции, однако, когда я тестировал его самостоятельно, я понял, что есть некоторая информа...

Задан 03 Jul 2013, 10:19 от Morteza Adi
  • 4 голосов
  • 0 ответов
  • 0 просмотров
0 ответов

В байт-коде есть дополнительная информация, которая используется для декодирования общей информации.

омпилировал класс Map, используя javap. Определение класса все еще показывает наличие универсальных типов K и V. Это должно было быть стерто концепцией стирания типов. Почему этого не происходит? ./javap -verbose java.util.Map Classfile ...

Задан 27 Sep 2017, 10:27 от Suraj Chakraborty
  • 81 голос
  • 0 ответов
  • 0 просмотров
0 ответов

Каковы преимущества стирания типов Java?

Я прочиталчирикать [https://twitter.com/dibblego/status/419232648674828288] сегодня сказал: Забавно, когда пользователи Java жалуются на стирание типов, которое является единственной вещью, которая была правильной в Java, игнорируя при этом ...

Задан 04 Jan 2014, 08:20 от vertti
  • 12 голосов
  • 0 ответов
  • 0 просмотров
0 ответов

стирание типа Java стирает мой общий тип?

Я думал, что стирание java стирает универсальные типы во время компиляции, однако, когда я тестировал его самостоятельно, я понял, что есть некоторая информация о универсальных типах в Bytecode. вот мой тест: я написал 2 класса: import ...

Задан 03 Jul 2013, 12:19 от Morteza Adi
  • 36 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

Вы говорите о том факте, что дженерики инвариантны в Java.

кто-нибудь объяснить мне, почему @Override public void fooMethod(Class<?> c)не переопределяет public void fooMethod(Class c)и дает мне следующие ошибки вместо: - Name clash: The method fooMethod(Class<?>) of type SubClass has the same erasure ...

Задан 02 Feb 2009, 09:00 от Henrik Paul
  • 23 голосов
  • 2 ответа
  • 0 просмотров
2 ответа

Тип стирающий, тип стирающий, `любые` вопросы?

Итак, предположим, что я хочу набрать стирание, используя стирание типа.Я могу создать псевдо-методы для вариантов, которые включают естественный:

Задан 08 Aug 2016, 18:04 от Yakk - Adam Nevraumont
  • 10 голосов
  • 3 ответа
  • 0 просмотров
3 ответа

 возможно это поможет

я есть две функции (не они были отредактированы с оригинала - некоторые из ответов ниже отвечают на оригинальные, которые вернули последовательность ()): def foo1[A](ls: Iterable[A]) : Iterator[A] = for (List(a, b) <- ls sliding 2) yield a def ...

Задан 22 Aug 2011, 19:41 от Owen
  • 9 голосов
  • 3 ответа
  • 0 просмотров
3 ответа

стирание типа Java по сравнению с полем # getGenericType и методом # getGenericReturnType

Насколько я понимаю, дженерики являются функцией времени компиляции Java, а параметризованная информация о типах не существует в скомпилированном байт-коде. Теперь я обнаружил методы Field # getGenericType и Method # getGenericReturnType, таким ...

Задан 28 May 2009, 23:05 от Landon Kuhn
  • 34 голосов
  • 4 ответа
  • 0 просмотров
4 ответа

Java: приведение типа коллекции к подтипу [дубликат]

На этот вопрос уже есть ответ здесь: Как вы приведете список супертипов к списку подтипов? [/questions/933447/how-do-you-cast-a-list-of-supertypes-to-a-list-of-subtypes] 16 ответовПредположим, классB расширяет классA, у меня естьList<A> что ...

Задан 30 Oct 2009, 16:50 от Landon Kuhn
  • 16 голосов
  • 0 ответов
  • 0 просмотров
0 ответов

Итак, короткий ответ: поскольку вы строго ввели «Пара», чтобы обозначить две разные вещи, «Дженерики» не играют, а просто вводят правило.

я есть следующий код: public class Pair< T, U > { public T first; public U second; } public class Test { public int method( Pair< Integer, Integer > pair ) { return 0; } public double method( Pair< Double, Double > pair ) { return 1.0; } }Это на ...

Задан 03 Apr 2011, 02:44 от Kyle Dewey
  • 9 голосов
  • 0 ответов
  • 0 просмотров
0 ответов

Java: как переопределить этот универсальный метод?

public <S extends T> List<S> save(Iterable<S> entities) { //... }Если я использую следующий метод для переопределения @Override public List<MyType> save(Iterable<MyType> structures) { List<MyType> result = new ArrayList<>(); //... return result; ...

Задан 24 Oct 2012, 12:40 от beginner_
  • 4 голосов
  • 5 ответов
  • 0 просмотров
5 ответов

Почему boost :: any не содержит строкового литерала?

#include <boost/any.hpp> #include <list> #include <string> #include <vector> struct _time_t { int month; int year; }; int main() { std::string str = "hahastr"; _time_t t; std::vector<boost::any> objVec; objVec.push_back(1); char* pstr = "haha"; ...

Задан 13 Nov 2013, 09:21 от Jichao