如何在Java中定义泛型extends类

avatar
作者
猴君
阅读量:0

在Java中,要定义一个泛型类并使其继承自另一个泛型或非泛型类,可以使用extends关键字

首先,我们定义一个泛型接口Shape

public interface Shape<T> {     double getArea();     double getPerimeter(); } 

接下来,我们定义一个泛型类Rectangle,它继承自Shape接口,并指定泛型参数T必须是Number或其子类:

public class Rectangle<T extends Number> implements Shape<T> {     private T width;     private T height;      public Rectangle(T width, T height) {         this.width = width;         this.height = height;     }      @Override     public double getArea() {         return width.doubleValue() * height.doubleValue();     }      @Override     public double getPerimeter() {         double widthValue = width.doubleValue();         double heightValue = height.doubleValue();         return 2 * (widthValue + heightValue);     } } 

在这个例子中,Rectangle类限制了泛型参数T必须是Number或其子类。这意味着您可以使用IntegerDouble等类型实例化Rectangle类,但不能使用非数值类型。

以下是如何使用Rectangle类的示例:

public class Main {     public static void main(String[] args) {         Rectangle<Integer> integerRectangle = new Rectangle<>(4, 5);         System.out.println("Integer Rectangle Area: " + integerRectangle.getArea());         System.out.println("Integer Rectangle Perimeter: " + integerRectangle.getPerimeter());          Rectangle<Double> doubleRectangle = new Rectangle<>(4.5, 5.5);         System.out.println("Double Rectangle Area: " + doubleRectangle.getArea());         System.out.println("Double Rectangle Perimeter: " + doubleRectangle.getPerimeter());     } } 

输出:

Integer Rectangle Area: 20 Integer Rectangle Perimeter: 18 Double Rectangle Area: 24.75 Double Rectangle Perimeter: 23.0 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!