В 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 для < и >.
Спасибо!




Я почти уверен, что это дженерики
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>, поскольку типы не совпадают. Для компилятора гораздо лучше иметь возможность указать вам на это, чем вызывать исключение времени выполнения, как это обычно происходит в неуниверсальном коде.