zoukankan      html  css  js  c++  java
  • Java泛型语法——T extends Comparable<? super T>的意思

    参考[https://www.cnblogs.com/cherryljr/p/6880657.html](樱の空 Java泛型的应用——T extends Comparable<? super T>)

    1. <T extends Comparable>

    表示:T 是一种数据类型,必须实现 Comparable 接口,且必须可以与相同类型的元素进行比较。例如:Integer
    (类型T必须实现Comparable接口,并且Comparable这个接口的类型参数是T。这样,T的实例之间才能相互比较大小)

    public final class Integer extends Number implements Comparable<Integer>
    

    2. <T extends Comparable<? super T>>

    表示:T要实现Comparable接口,并且T的父类要实现Comparable接口
    (类型T必须实现Comparable接口,并且Comparable这个接口的类型参数是T或者是T的任一父类。这样声明后,T的实例之间和T的父类的实例之间可以相互比较大小)

    public class Base implements Comparable<Base>{
        private int sortOrder;
    
        public Base(int sortOrder) {
            this.sortOrder = sortOrder;
        }
    
        @Override
        public int compareTo(Base o) {
            if(sortOrder < o.sortOrder){
                return -1;
            }else if(sortOrder > o.sortOrder){
                return 1;
            }else{
                return 0;
            }
        }
    
    }
    
    public class Child extends Base {
        public Child(int sortOrder) {
            super(sortOrder);
        }
    }
    
    // 方法
    public static <T extends Comparable<? super T>> T max(List<T> arr){
        T max = arr.get(0);
        for(int i=1; i<arr.size(); i++){
            if(arr.get(i).compareTo(max)>0){
                max = arr.get(i);
            }
        }
        return max;
    }
    
    // 调用
    List<Child> childs = new ArrayList<Child>();
    childs.add(new Child(20));
    childs.add(new Child(80));
    Child maxChild = max(childs);
    
    1. 说明:Child类没有实现Comparable<Child>,它实现的是 Comparable<Base>
    2. Child类型带入到泛型方法max()中:
      Child extends Comparable<? super Child>
    3. <? super Child> 可以匹配 Base,所以整体匹配
  • 相关阅读:
    ElasticSearch可视化工具 Kibana
    ElasticSearch数据库同步插件logstash
    powerDesigner 一些设置
    springcloud 之 bus 消息总线
    zipkin 服务追踪
    配置文件优先级的问题
    Hystrix 断路器
    feign 负载均衡熔断器
    zuul 整理
    后端——框架——容器框架——spring_boot——《官网》阅读笔记——第四章节11(集成JMS)——待补充
  • 原文地址:https://www.cnblogs.com/huangj/p/14775551.html
Copyright © 2011-2022 走看看