设定类型通配符的上限

来源:互联网 发布:mac虚拟机使用经验 编辑:程序博客网 时间:2024/05/17 07:02

以下为Shape.java

import java.awt.*;public abstract class Shape {public abstract void draw(Canvas c);}


以下为Circle.java

import java.awt.*;public class Circle extends Shape{public void draw(Canvas c){System.out.println("在画布"+c+"上画一个圆。");}}


以下为Rectangle.java

import java.awt.*;public class Rectangle extends Shape{public void draw(Canvas c){System.out.println("在画布"+c+"上画一个矩形。");}}


以下为Canvas.java

import java.util.*;public class Canvas {public void drawAll(List<? extends Shape> shapes){for(Shape s : shapes){s.draw(this);}}public static void main(String[] args){List<Circle> circleList=new ArrayList<Circle>();circleList.add(new Circle());circleList.add(new Circle());List<Rectangle> rectangle=new ArrayList<Rectangle>();rectangle.add(new Rectangle());Canvas c=new Canvas();c.drawAll(circleList);c.drawAll(rectangle);}}


可能的输出结果:

在画布Canvas@413f9276上画一个圆。
在画布Canvas@413f9276上画一个圆。
在画布Canvas@413f9276上画一个矩形。

原创粉丝点击