Вопросы по теме '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 просмотров
schedule
17.06.2022
Проблема дженериков — невозможно скомпилировать код, возможно, из-за стирания типа
У меня есть код, похожий на этот:
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 просмотров
schedule
26.02.2022
Стирание 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 просмотров
schedule
15.05.2023
Какова стоимость 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 просмотров
schedule
23.11.2022
Как переопределить метод, имеющий параметр 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 просмотров
schedule
17.09.2022
Разрешение аргументов типа во время выполнения с использованием отражения 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