zoukankan      html  css  js  c++  java
  • Java泛型简介一

      JDK5引入了泛型,可以在编译期提供类型安全监测。泛型和集合类的结合,是消灭重复代码的一大利器。对于一些通用的逻辑,我们并不关心它的真正类型是什么,只要输入--执行这一逻辑--输出即可满足我们的需求。对于类似的需求,继承和接口都有很大的局限性,于是泛型机制应运而生,它真正做到了类或方法与所使用对象的类型的解耦。泛型可以让参数,在运行中动态地指定为某一种类型。

      1.泛型类。泛型类可以在类名后使用尖括号的形式创建。可以指定一个,也可以指定多个类型参数:

    public class GenericClassTest {
    
        class InnerTestOne<T> {
            T param;
    
            public T getParam() {
                return param;
            }
    
            public void setParam(T param) {
                this.param = param;
            }
        }
    
        class InnerTestTwo<M, N> {
            M paramOne;
            N paramTwo;
    
            public InnerTestTwo(M paramOne, N paramTwo) {
                this.paramOne = paramOne;
                this.paramTwo = paramTwo;
            }
        }
    
        class InnerTestThree<A, B, C> {
            A paramOne;
            B paramTwo;
            C paramThree;
    
            public InnerTestThree(A paramOne, B paramTwo, C paramThree) {
                this.paramOne = paramOne;
                this.paramTwo = paramTwo;
                this.paramThree = paramThree;
            }
        }
    
    }

       具体使用时,直接使用类名<具体类型>即可。如下:

        public static void main(String[] args) {
            new GenericClassTest().new InnerTestOne<String>();
            new GenericClassTest().new InnerTestThree<String, Integer, Boolean>("cat", 12, true);
        }

      2.泛型接口与泛型接口的实现,与泛型类的定义类似:

    public interface GenericInterfaceTest<T> {
        void showClass(T t);
    }
    
    
    public class GenericInterfaceImpl implements GenericInterfaceTest<String> {
        @Override
        public void showClass(String s) {
            System.out.println(s.getClass().getName());
        }
    }

      或者可以继续将这个类型放在实现类中:
    public class GenericInterfaceImpl<T> implements GenericInterfaceTest<T> {
        @Override
        public void showClass(T t) {
            System.out.println(t.getClass().getName());
        }
    }
     3.泛型方法。注意这里指的是在普通类中定义的泛型方法,而不是泛型类或者泛型接口中:
    public class GenericMethodTest {
    
        public <T> T showSelf(T t) {
            return t;
        }
    
        public static <M> Method[] showAllMethods(M m) {
            return m.getClass().getMethods();
        }
    
        public final <N> String showToString(N n) {
            return n.toString();
        }
    
        public <K> Integer showLength(K... k) {
            return k.length;
        }
    
    }
     这里就简单介绍比较常见的泛型使用。下一篇会对泛型通配符,边界等内容进行说明。

  • 相关阅读:
    chrome浏览页面常用快捷键 && 常见的HTTP状态码
    hasCode详解
    队例初始化问题(Queue)
    新手问题--双链表最后一个节点无法删除问题
    高级排序--快速排序
    高级排序--归并排序
    高级排序--希尔排序
    简单排序--插入排序
    简单排序--选择排序
    简单排序--冒泡排序
  • 原文地址:https://www.cnblogs.com/bruceChan0018/p/14939208.html
Copyright © 2011-2022 走看看