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

Дженерики Java и стирание типов
Учитывая следующий код: public void example(Object o) { if(o instanceof List<MyType>) //do something } Я понимаю, что это невозможно (и почему это невозможно), учитывая то, как Java обрабатывает обобщенные типы и стирание типов....
923 просмотров
schedule 26.04.2024

Стирание типов и перегрузка в Java: почему это работает?
У меня такой код: 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,...
2222 просмотров
schedule 12.06.2022

Как Spring может получить информацию об общем типе во время выполнения в отношении строго типизированной коллекции?
Я прочитал ниже в документе Spring 3.0: Строгая типизированная коллекция (только Java 5+) В Java 5 и более поздних версиях можно использовать строго типизированные коллекции (используя универсальные типы). То есть можно объявить тип...
1678 просмотров
schedule 25.09.2023

Метод имеет (неожиданно) такое же стирание, что и другой метод
Я прочитал все другие вопросы по этому поводу, но не могу понять, почему в моем случае происходит стирание типа. у меня есть public <T extends Aclass&Binterface> boolean test(final T param) { ... } public boolean test(final Aclass...
1330 просмотров

Haskell стирает типы?
Стирает ли Haskell типы, и если да, то чем это похоже/не похоже на стирание типов, происходящее в Java?
1986 просмотров
schedule 24.10.2023

Как использовать сопоставление с образцом с параметризованными признаками?
У меня проблемы с чертами Scala и стиранием типов. У меня есть эта черта: trait Meta[T] { def ~=(e: T): Boolean } Теперь я хочу использовать сопоставление с образцом для проверки этого случая: (m,i) match { case (x:Meta[T], y: T) if x...
1102 просмотров
schedule 19.02.2023

Scala: перекрестное (декартово) произведение с несколькими источниками и разнородными типами
Я пытаюсь построить несколько перекрестных произведений обходов разных (но каждый однородных) типов. Желаемый возвращаемый тип — это обход кортежа с типом, соответствующим типам во входных обходах. Например: List(1, 2, 3) cross Seq("a", "b")...
1128 просмотров

Обобщения Java JComboBox
недавно я немного больше читал о Java Generics и пришел к этой статье: http://gafter.blogspot.nl/2004/09/puzzling-through-erasure-answer.html , в котором говорится, что Java всегда будет обратно совместима. Итак, что Java сделала с JComboBox? Код...
892 просмотров
schedule 28.12.2022

C++: Виртуальный шаблон типа Erasure Обходной путь
Я использую шаблон проектирования стирания типа, чтобы предоставить независимый от шаблона интерфейс для одного из моих классов шаблонов. Однако я столкнулся с проблемой, что один из методов, которые я хочу раскрыть, который объединяет два экземпляра...
540 просмотров
schedule 08.09.2023

Невозможно воспроизвести результат примера Type Erasure
Я читаю раздел 8.4 "Java Generics and Collections". Автор определяет следующий код, пытаясь объяснить двоичную совместимость: interface Name extends Comparable { public int compareTo(Object o); } class SimpleName implements Name { private...
113 просмотров
schedule 12.02.2023

Обобщения и стирание типов
Может ли кто-нибудь объяснить мне, почему это происходит: public class Array<E> { public E[] elements = (E[]) new Object[10]; public E get(int idx) { return elements[idx]; // Ignore bound-checking for brevity. }...
140 просмотров
schedule 26.12.2023

Generics - вывод типа и стирание типа
Этот код, скомпилированный с помощью Java SE-1.7, дает следующий результат (ниже). Я понимаю, предполагаемый тип значения должен быть Object, как получается, что распознаются строковые и целые типы? public class Generics1 { public class...
63 просмотров

Разница в совпадении шаблонов scala между массивом и списком
У меня есть следующие утверждения. val a: Any = Array("1", "2", "3") a match { case p: Array[Int] => println("int") case l: Array[String] => println("string") } val b: Any = List(1, 2, 3) b match { case l: List[String] =>...
295 просмотров
schedule 06.05.2022

Работа с Type Erasure с помощью foldLeft
У меня есть список, содержащий смесь строк и карт, listOfIds . Код ниже пытается получить этот список. Сопоставляется с совпадающими, а строки — с несовпадающими. val (matched, unmatched) = listOfIds.foldLeft(List.empty[Map[String, String]],...
55 просмотров
schedule 13.07.2023

Стирание типа Java для членов необработанных типов
Мне любопытно, какие конкретные правила стирания типа Java вызывают следующее: import java.util.function.Supplier; public class TypeCheckerWeirdness { public static class Meow<S extends Meow> { public Supplier<Boolean>...
25 просмотров
schedule 13.06.2022

Сохранение аргументов типа в Akka receive
На этот вопрос как бы ответил Роланд Кун в этом post , однако, несмотря на несколько комментариев с просьбами о деталях, он не удосужился поделиться полным ответом. Вот что я хочу сделать: у меня есть класс-оболочка case class Event[T](t: T) ,...
106 просмотров
schedule 12.03.2023

Общая итерация между коллекциями
Итак, у меня есть либо словарь, либо массив, и вместо того, чтобы проверять null для любого из них, а затем перечислять их отдельно, используя свою собственную логику, я пытаюсь найти общее решение, которое независимо от типа коллекции выполняет...
322 просмотров

почему я вижу, что абстрактный тип T в шаблоне типа не отмечен, поскольку он устраняется путем стирания, хотя у меня есть теги типа и класса
У меня есть код, который извлекает значения из карты, которую я назвал псевдонимом: type CsvRow = Map[String, Any] и класс экстракции: class CsvExtractor(row: CsvRow) extends Extractor { def get[T: TypeTag: ClassTag](k: String): T =...
754 просмотров
schedule 25.07.2022

C++ виртуальная шаблонная функция
Понятно, что функции не могут быть одновременно шаблонными и виртуальными. Но может быть очень умный шаблон проектирования, который подойдет. Моя цель - иметь функцию, которая выглядит так: void configure(const Configuration &config){...
533 просмотров

Тип стирания не работает
Согласно этому руководству по дженерикам : В процессе стирания типа компилятор Java стирает все параметры типа и заменяет каждый его первой границей, если параметр типа ограничен, или Object, если параметр типа не ограничен. Я взял тот же...
32 просмотров
schedule 27.04.2022