Учебники

Java Generics — несколько границ

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

Синтаксис

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

куда

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

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

максимум — максимум это общий метод.

T — Параметр универсального типа, переданный в универсальный метод. Это может занять любой объект.

Описание

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

пример

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

Live Demo

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;   
   }*/
}

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