Если бы я должен был создать класс, и этот класс должен принимать только определенный тип данных. Я бы начал использовать generics, и в этом классе я перейду к типу, ограниченному верхней границей класса Number.Уточнение Java Generics (ограничение T на тип при использовании Comparable)
Таким образом, этот класс может использовать только типы класса Number или подклассы Number (Integer, Double, Long и т. Д.).
Позволяет сказать, что у меня есть массив этих типов, и я хочу сравнить значения в этом массиве. Таким образом, этот класс содержит массив только этих разрешенных типов данных, и мы хотим сравнить только эти типы.
Мы можем сделать это, используя сопоставимый интерфейс, который содержит метод compareTo. Вы можете использовать метод compareTo только для классов, реализующих интерфейс Comparable. Число является одним из классов, реализующих этот интерфейс.
Так что если у меня есть класс заголовка, который определяет следующее:
public class SomeName<T extends Number> {
Это успешно подразумевает ограничение типа Т только принимать типы Number или подклассы числа. Если бы я хотел использовать метод compareTo из интерфейса Comparable, который класс Numbers реализует, с которым T ограничено.
Если бы я иметь такой метод, как
public T someName(T[] SomeVariable) {
Почему этот метод не может использовать метод CompareTo? Т связи к классу чисел, который реализует Сопоставимым.
Если бы я иметь
public <T extends Comparable<T>> someName(T[] SomeVariable) {
Тогда это работает, потому что T расширяет сопоставимым, который является samething, как T реализует сопоставимой в родовом обозначении ... Это не то, что практически то же самое, что и выше, хотя?
Ну, номер делает ** не ** реализуется Сравнительно ... http://docs.oracle.com/javase/8/docs/api/java/lang/Number.html –