Что Java эквивалентен из шаблонов C++?

Что Java эквивалентен из шаблонов C++?

Я знаю, что существует интерфейс под названием Шаблон. Это связано?

22
задан Trent 29 January 2010 в 02:56
поделиться

6 ответов

Шаблоны Как в C ++ не существует в Java. Наилучшее приближение Generics .

Одним из огромных различий в том, что в C ++ это законно:

<typename T> T sum(T a, T b) { return a + b; } 

в Java нет эквивалентной конструкции. Лучшее, что вы можете сказать, это

<T extends Something> T Sum(T a, T b) { return a.add(b); }

где что-то имеет метод под названием Add .

В C ++, что происходит, что компилятор создает сборкущую версию шаблона для всех экземпляров шаблона, используемого в коде. Таким образом, если у нас есть

int intResult = sum(5, 4);
double doubleResult = sum(5.0, 4.0);

, то компилятор C ++ соберет версию Sum для INT и версия Sum для Double Отказ

В Java есть концепция стирания . Что происходит, состоит в том, что компилятор удаляет все ссылки на параметры общих типов. Компилятор создает только одну скомпилированную версию кода независимо от того, сколько раз он используется с различными параметрами типа.

Другие различия

50
ответ дан 29 November 2019 в 03:55
поделиться

Вам не нужны шаблоны в Java. Шаблоны в основном полезны, когда вам необходимо иметь совершенно разные типы в качестве параметра, о котором вы ничего не знаете. В Java все объекты являются виртуальными и наследующими из одного корневого объекта, а примитивные типы определяются гораздо более четко и отказываются от работы более чувствительными способами, поэтому на самом деле нет смысла к нему.

Вы можете получить лучшую производительность с шаблонами стилей C ++, но из-за того, как они генерируют гораздо больше кода и быстрый скорость доступа к данным процессора. объекты в отличие от примитивов.

1
ответ дан 29 November 2019 в 03:55
поделиться

В Java нет реальных шаблонов. Шаблоны C++ - это сущности времени компиляции, которые используются для генерации классов. Во время исполнения нет их следа.

В Java существуют параметризованные типы как часть механизма, называемого generics. Он служит схожему назначению, но существенно отличается от него по принципу работы и его последствиям. Он имеет некоторое представление во время исполнения, есть определенные правила и т.д.

Начните с чтения Java-учебника , затем прочтите Эффективную Java Блоха для подробного описания предостережений, если вы хотите быть "властным пользователем".

5
ответ дан 29 November 2019 в 03:55
поделиться

Java имеет дженерики, которые похожи, но не совсем совпадают с шаблонами. Я не знаю, что такое интерфейс Template, но он не имеет ничего общего с C++ шаблонами.

0
ответ дан 29 November 2019 в 03:55
поделиться

Там нет сборки в шаблонном механизме в Java. Вместо у них есть дженерики. Кроме того, IDes имеют что называемые шаблонами кода E.g. Для Eclipse .

0
ответ дан 29 November 2019 в 03:55
поделиться

В Java нет шаблонов. Единственное, что сопоставимо с шаблонами, - это дженерики Java.

http://java.sun.com/developer/technalarticles/j2se/generics/

2
ответ дан 29 November 2019 в 03:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: