安卓4_泛型

泛型:可以近似理解为C语言中的宏定义对

0.定义一个泛型类

ps: 对于包装类型变量,是可以直接获得变量名的
eg: a.getClass().getTypeName();

//此处标识符T 可以随意写
public class Generic { //泛型类的<>定义在名称后面
    private T s;

    public void a(T a) { //作为参数
        System.out.print(a + " ");
        System.out.println(a.getClass().getTypeName()); 
    }

    public  void aa(T a) { //泛型方法的<>定义在返回值类型前面
        System.out.print(a + " ");
        System.out.println(a.getClass().getTypeName());
    }

    public static  void aaa(T a) {
        System.out.print(a + " ");
        System.out.println(a.getClass().getTypeName());
    }
}

1.泛型类的使用

(0)直接使用
public class Main {

    public static void main(String[] args) {
        Generic a = new Generic<>();
        Generic b = new Generic<>();

        //方法a的泛型与new的泛型类一致
        a.a("a");
        b.a(1);

        //方法aa的泛型与传入的参数相关
        a.aa(2);
        b.aa("b");

        Generic.aaa("static");
    }
}
运行结果
(1)继承使用
public class Main {

    public static void main(String[] args) {
        // Number 是 ?(未知类型) 的父类
        Generic generic = new Generic<>();
        generic.a(1.2);
        generic.a(1);
        generic.a(2.6f);
    }
}
运行结果
(2)类的泛型定义

ps: 找类名的方法 a.getClass()

public class Main {

    public static void main(String[] args) {

        Class aClass1 = AA.class; //常用1
        System.out.println(aClass1);

        try {
            Class aClass2 = Class.forName("com.company.Main$AA"); //"完整类名"
            System.out.println(aClass2);
        } catch (ClassNotFoundException e) {
            System.out.println("类名未找到");
        }

        AA aClass3 = new AA(); //常用2
        System.out.println(aClass3.getClass());
    }

    private static class AA extends CC{
        @Override
        public String toString() {
            return "AA";
        }
    }
    private static class BB extends AA{
        @Override
        public String toString() {
            return "BB";
        }
    }
    private static class CC implements DD {
        @Override
        public String toString() {
            return "AA";
        }
    }
    private interface DD{} //接口
}
运行结果

你可能感兴趣的:(安卓4_泛型)