Подтвердить что ты не робот

Что такое Generics в Java?

Я не совсем понимаю суть дженериков. Что они делают, как вы их используете?

Из того, что я могу сказать, все, что они делают, это проверить возвращаемые типы во время компиляции вместо времени выполнения, чтобы избежать запуска программы до появления ошибки. Это все, что они делают?

например:

public <Integer> int test() {
    return 'c'; //will throw error at compile instead of runtime
}

Я читал кое-что о том, как генерики являются произвольными, и вы должны использовать только заглавные буквы? Это пугает.

4b9b3361

Ответ 1

Generics позволяет вам настроить метод или класс общий "для любого типа, с которым вы работаете. Например, предположим, что у вас есть метод, который объединяет два числа. Чтобы работать с самими типами, вам может потребоваться создать несколько версий этого метода. Например:

public int Add(int a, int b)

public double Add(double a, double b)

public float Add(float a, float b)

Общие возможности позволяют создать один метод, настроенный для типа, вызывающего его.

public T Add<T>(T a, T b)

T заменяется любым типом, который вы используете.

Ответ 2

Обратитесь к Основы в FAQ Angelika Langer - это лучшее объяснение всех вещей, связанных с генериками Java, которые вы, скорее всего, найдете. Тем не менее, первоначальной основной целью дженериков было включение "типизированных" коллекций.

Ответ 3

Самый простой способ, который я могу описать, чтобы объяснить дженерики, - это хороший метаплан "copy-paste":

public <COPY> PASTE addTwoThings(PASTE a, PASTE b) {
    return a + b;
}

Вы указываете тип (в разделе <COPY>), а java использует этот тип во всем блоке кода, и он будет убедиться, что типы совместимы. Делая это таким образом, вы избегаете писать:

  • addTwoIntegers
  • addTwoStrings
  • addTwoMyObjects

и т.д.. Не путайте это для препроцессора, хотя Java ожидает ТОЛЬКО типа, который будет предоставлен.