Дженерики Java - множественные границы

Параметр типа может иметь несколько границ.

Синтаксис

public static <T extends Number & Comparable<T>> T maximum(T x, T y, T z)

где

  • maximum - Максимум - это общий метод.

  • T- Параметр универсального типа, передаваемый универсальному методу. Может принимать любой объект.

Описание

T - это параметр типа, передаваемый в универсальный класс Box, он должен быть подтипом класса Number и должен включать интерфейс Comparable. Если класс передается как связанный, он должен быть передан первым до интерфейса, иначе произойдет ошибка времени компиляции.

пример

Создайте следующую программу Java, используя любой редактор по вашему выбору.

package com.tutorialspoint;

public class GenericsTester {
   public static void main(String[] args) {
      System.out.printf("Max of %d, %d and %d is %d\n\n", 
         3, 4, 5, maximum( 3, 4, 5 ));

      System.out.printf("Max of %.1f,%.1f and %.1f is %.1f\n\n",
         6.6, 8.8, 7.7, maximum( 6.6, 8.8, 7.7 ));
   }

   public static <T extends Number 
      & Comparable<T>> T maximum(T x, T y, T z) {
      T max = x;      
      if(y.compareTo(max) > 0) {
         max = y;   
      }

      if(z.compareTo(max) > 0) {
         max = z;                    
      }
      return max;      
   }

   // Compiler throws error in case of below declaration
   /* public static <T extends Comparable<T> 
      & Number> T maximum1(T x, T y, T z) {
      T max = x;      
      if(y.compareTo(max) > 0) {
         max = y;   
      }

      if(z.compareTo(max) > 0) {
         max = z;                    
      }
      return max;   
   }*/
}

Это даст следующий результат -

Вывод

Max of 3, 4 and 5 is 5

Max of 6.6,8.8 and 7.7 is 8.8