Вопросы по теме 'type-erasure'

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

Как я могу отличить def foo [A] (xs: A *) от def foo [A, B] (xs: (A, B) *)?
Я знаю, что стирание типов делает их одинаковыми по типам во время выполнения, так что: class Bar { def foo[A](xs: A*) { xs.foreach(println) } def foo[A, B](xs: (A, B)*) { xs.foreach(x => println(x._1 + " - " + x._2)) } } дает...
3022 просмотров
schedule 27.09.2022

Java Generics — от ‹int› до ‹Integer›
На пути изучения Java Generics я застрял в одном месте. Было написано: « Java Generics работает только с объектами, а не с примитивными типами ». e.g Gen<Integer> gen=new Gen<Integer>(88); // Works Fine .. Но с...
20644 просмотров

Проблема дженериков — невозможно скомпилировать код, возможно, из-за стирания типа
У меня есть код, похожий на этот: public class A<E> { protected E value; public E getValue() { return value; } public void setValue(E value) { this.value = value; } } Затем у меня есть класс...
108 просмотров
schedule 21.02.2023

Почему DummyImplicit не устраняет неоднозначность [String] (a: A) из (a: String)
Учитывая следующий фрагмент кода: final case class Attr[A](name: String)(implicit conv: String To A) { def apply(value: A)(implicit dummy: DummyImplicit) = Attribute(name, value) def apply(value: String) = Attribute[A](name, value) }...
511 просмотров
schedule 17.08.2022

scala 2.9: планы по выводу типов параметров функций с аргументами по умолчанию?
Я только начинаю работать со Scala. Я использую Python для исследовательского программирования и конвертирую довольно большую (~ 4000 строк) программу Python. Несколько комментариев: Похоже, пришло время заняться Scala, так как в версию 2.8...
444 просмотров

Стирание Java с общей перегрузкой (без переопределения)
У меня есть FinanceRequests и CommisionTransactions в моем домене. Если у меня есть список FinanceRequests, каждый FinanceRequest может содержать несколько CommisionTransactions, которые необходимо вернуть. Не беспокойтесь, как именно это делается....
11257 просмотров
schedule 27.11.2022

Как Type Erasure работает в Java?
Я просматривал тему TypeErasure по адресу http://download.oracle.com/javase/tutorial/java/generics/erasure.html , в котором говорится, что компилятор удаляет всю информацию, связанную с параметрами и аргументами типа внутри класса или метода....
677 просмотров
schedule 29.09.2022

Как использовать вложенные перечисления с стиранием типов Java
public enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY; public enum WeekDays{ MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, } public enum...
683 просмотров

Какова стоимость typeid?
Я рассматриваю настройку стирания типа, которая использует typeid для разрешения типа, например... struct BaseThing { virtual ~BaseThing() = 0 {} }; template<typename T> struct Thing : public BaseThing { T x; }; struct A{}; struct...
9379 просмотров
schedule 08.07.2022

Как избавиться от непроверенного из-за предупреждения о стирании при сопоставлении с образцом
Скала 2.8.1 Я реализовал очень простой внешний DSL, используя парсер/комбинатор для контроля качества, чтобы написать приемочные тесты. Недавно я добавил возможность зацикливаться на наборе выражений, например так sealed trait Expr ......
321 просмотров

Как переопределить метод, имеющий параметр Object, с помощью универсального параметра?
Я хочу переопределить метод с параметром типа Object : public void setValue(Object value) { // ... } и сделайте этот параметр универсальным типом T : @Override public void setValue(T value) { super.setValue(value); } Как я...
2929 просмотров
schedule 12.08.2022

Ошибка несоответствия типа Scala на карте
Что мне здесь не хватает? Это ошибка, которую я получаю... ошибка: несоответствие типов; найдено: List[Double](в методе calculateHaarWaveletI)] требуется: список[scala.Double] Console.println(list2Tuples(ls.take(n))) Вот...
746 просмотров
schedule 13.01.2023

Scala classOf для параметра типа, повторное посещение
Вслед за: Scala classOf для параметра типа Я пытался реализовать его, но, похоже, у меня возникла какая-то странная проблема с дженериками, на самом деле я уже запутался в паре из них, но это настолько близко к правильному, что я могу это...
1625 просмотров
schedule 06.12.2023

Стирание типов и наследование: объект List‹Number› при доступе из подкласса рассматривается как необработанный список?
Вопрос: Объект параметризованного класса при доступе из подкласса рассматривается как необобщенный. Как мне преодолеть это? Подробности: Рассмотрим базовый класс: public class MyBaseClass { protected List<Number> numbers = new...
420 просмотров
schedule 19.12.2022

Предоставление объекта Class с верхней привязкой типа с помощью classManifest
Допустим, мне нужно предоставить методу объект java.lang.Class , представляющий подкласс некоторого родительского класса A . Мне нужно сделать это из другого метода, который имеет общий параметр с верхним типом, привязанным к A . Я подумал, что...
899 просмотров
schedule 02.04.2023

Каковы исключения для ввода стирания в Java?
Я видел, как в некоторых местах в Интернете упоминалось, что в некоторых ситуациях можно использовать API отражения для получения информации об общих типах данных, которые, как я думал, будут потеряны из-за стирания типа. Я ищу полный список...
462 просмотров
schedule 09.08.2022

Сопоставление шаблона Scala с манифестом
Эта замечательная ежедневная статья о Scala описывает, как преодолеть стирание типов при сопоставлении. Я пытаюсь применить эту технику для преобразования IndexesSeq параметризованных типов, но совпадения не удались. Почему это так и как я могу...
1149 просмотров
schedule 17.11.2022

Сопоставление с шаблоном и вывод типа в Scala
Может ли кто-нибудь объяснить, почему компилируется следующий код? Option("foo") match { case x: List[String] => println("A") case _ => println("B") } Это дает мне (ожидаемое) предупреждение об удалении типа, но оно все равно...
938 просмотров

Разрешение аргументов типа во время выполнения с использованием отражения scala 2.10
Учитывая объявление типа, я могу разрешить аргумент типа. scala> reflect.runtime.universe.typeOf[List[Int]] match {case x:TypeRef => x.args} res10: List[reflect.runtime.universe.Type] = List(Int) Для значения времени выполнения тот же...
2332 просмотров
schedule 15.07.2023