zoukankan      html  css  js  c++  java
  • 泛型类与泛型方法区别

      此处仅通过一示例说明泛型类与泛型方法使用上的区别,非泛型详细说明。主要是泛型类、泛型方法、普通方法代码结构上的区别,不当处欢迎大家指正。

    public class GeneralTest<F> {
    
        public <E> E getFirst(E... c) {//A.【泛型类】中的【泛型方法】
            E e = c[0];
            return e;
        }
    
        public static <T> T getMiddle(T... a) {//B.【泛型类】中的静态【泛型方法】
            return a[a.length / 2];
        }
    
        public F getLast(F... b) {//C.【泛型类】中的【标准方法】
            return b[b.length - 1];
        }
        
    //    public G getElse(G... b) {//D.【泛型类】中变量、返回值、方法参数必须是类声明时包含的类型(T、F...)
    //        return b[b.length - 1];
    //    }
    
        public String getSth(String... b) {//E.【泛型类】中的【普通方法】
            return b[b.length - 1];
        }
        
        public Object getSth(Object o) {//F.【泛型类】中的【普通方法】
            return o;
        }
    
        public static void main(String[] args) {
            Integer[] intarry = { 1, 2, 3, 4, 5, 6 };
            String[] strarry = { "a", "b", "c", "d","e" };
            
            GeneralTest<Integer> arrayAlg = new GeneralTest<Integer>();//泛型类声明参数类型为Integer
            
            //getFirst为泛型方法,因此可接受任意类型的参数
            Integer ii = arrayAlg.getFirst(intarry);//此处传入Integer类型参数
            System.out.println(ii);
            String ss = arrayAlg.getFirst(strarry);//此处传入String类型参数
            System.out.println(ss);
            
            //getMiddle为静态泛型方法,用法同getFirst,因此可接受任意类型的参数
            ii = getMiddle(intarry);
            System.out.println(ii);
            ss = getMiddle(strarry);
            System.out.println(ss);
    
            //getLast为泛型类的标准方法(用词可能不恰当,望包涵、指正),仅接受ArrayAlg实例化时指定的参数类型
            ii = arrayAlg.getLast(intarry);
            System.out.println(ii);
    //        ss = arrayAlg.getLast(strarry);//getLast为泛型类声明的方法,在对象实例化时已经确定了仅接受Integer类型参数
    //        System.out.println(ss);
    
            ss = arrayAlg.getSth(strarry);//泛型类中的普通方法
            System.out.println(ss);
        }
    }

    小结:

    泛型类中可以有

    A.标准的方法(方法参数类型与类声明一致),且方法调用时,参数类型在对象实例化时指定,不可接受其它类型的参数。

    B.泛型方法(方法参数由该方法控制,不受类声明参数类型影响)

    C.指定返回类型及参数类型的普通方法

    另外,泛型方法不是一定要在泛型类中定义,普通类也可定义泛型方法。

  • 相关阅读:
    Wiki上的C++哲学
    UC网盘被关停 将与阿里淘盘合并?(案例说明云盘的成本才是重点,技术不是问题;与巨头竞争是重点)
    又一个!迅雷快盘宣布关闭个人存储服务
    QT运行cmd指令(两种办法:QProcess.start然后waitForFinished,运行cmd /c命令)
    EventBus实现
    彻底抛弃PeopleEditor,SharePoint中利用Jquery Chosen创建新的人员选择器
    软件用了那些技术2
    软件的模块化开发
    在C#中模拟Javascript的setTimeout方法
    IP:网际协议
  • 原文地址:https://www.cnblogs.com/fragranting/p/8610699.html
Copyright © 2011-2022 走看看