• 泛型类与泛型方法区别


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

    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.指定返回类型及参数类型的普通方法

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

  • 相关阅读:
    SQLITE3在php中的运用
    C# DllImport用法和路径问题
    ExtJs2.0学习系列(9)Ext.TabPanel之第一式
    ExtJs2.0学习系列(11)Ext.XTemplate
    ExtJs2.0学习系列(12)Ext.TreePanel之第一式
    ExtJs2.0学习系列(10)Ext.TabPanel之第二式
    ExtJs2.0学习系列(6)Ext.FormPanel之第三式(ComboBox篇)
    ExtJs2.0学习系列(15)extjs换肤
    ExtJs2.0学习系列(8)Ext.FormPanel之第五式(综合篇)
    ExtJs2.0学习系列(5)Ext.FormPanel之第二式
  • 原文地址:https://www.cnblogs.com/fragranting/p/8610699.html
Copyright © 2020-2023  润新知