Что означают <и>, например, реализует Comparable <BigInteger>?

В Java 1.4.2 класс java.math.BigInteger реализует интерфейсы Comparable, Serializable.

В Java 1.5.0 класс java.math.BigInteger реализует интерфейсы Serializable, Comparable<BigInteger>.

Это просто пример, который поможет мне задать вопрос о < и >. Что меня действительно интересует, так это материал < и >.

У меня тройной вопрос:

  • что означает часть <BigInteger> в заявлении implements?
  • как называется этот синтаксис?
  • и что он делает?

P.S .: Очень сложно найти в Google < и >, и вообще невозможно найти SO для < и >.

Спасибо!

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
6
0
2 670
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я почти уверен, что это дженерики

http://java.sun.com/j2se/1.5.0/docs/guide/language/generics.html

Я спросил что-то подобное (C#), там есть полезная информация Что означает метод <ClassName>?

Ответ принят как подходящий

Прочтите Учебное пособие по Java Generics. То, что находится между угловыми скобками, - это параметр типа. Comparable - это общий класс, и в этом случае угловые скобки означают, что класс сопоставим с другими BigInteger.

Чтобы получить немного больше пояснений в этом случае, взгляните на Документы Javadocs для Comparable в 1.5. Обратите внимание, что он объявлен как Comparable<T> и что метод compareTo принимает аргумент типа T. T - это параметр типа, который «заполняется» при использовании интерфейса. Таким образом, в этом случае объявление о реализации Comparable<BigInteger> подразумевает, что у вас должен быть метод compareTo(BigInteger o). Другой класс может реализовать Comparable<String>, что означает, что он должен будет реализовать метод compareTo(String o).

Надеюсь, вы заметите пользу от приведенного выше фрагмента. В версии 1.4 сигнатура compareTo могла принимать только Object, поскольку все виды классов реализовали Comparable, и не было никакого способа точно знать, что нужно. Однако с помощью дженериков вы можете указать, что вы сопоставимы по отношению к определенному классу, а затем написать более конкретный метод compareTo, который принимает только этот класс в качестве параметра.

Преимущества здесь двоякие. Во-первых, вам не нужно выполнять проверку instanceof и преобразование в реализацию вашего метода. Во-вторых, компилятор может выполнять гораздо больше проверок типов во время компиляции - вы не можете случайно передать String во что-то, что реализует Comparable<BigInteger>, поскольку типы не совпадают. Для компилятора гораздо лучше иметь возможность указать вам на это, чем вызывать исключение времени выполнения, как это обычно происходит в неуниверсальном коде.

Другие вопросы по теме