码迷,mamicode.com
首页 > 编程语言 > 详细

Java之泛型

时间:2019-12-12 22:21:20      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:阶段   ima   this   main   strong   get   ring   nts   定义类   

1、为什么要有泛型Generic?

技术图片

2、 总结

Java中的泛型,只在编译阶段有效。在编译过程中,正确检验泛型结果后,会将泛型的相关信息擦出,并且在对象进入和离开方法的边界处添加类型检查和类型转换的方法。也就是说,泛型信息不会进入到运行时阶段。

3、泛型的使用

1..泛型类
2.泛型方法
3.泛型接口

3.1 泛型类

public class Person {
    public static void main(String[] args) {
        A<String> key = new A<String>();//在new A的对象指定泛型的类型为String
        key.setKey("李四");//对象使用setKey(T key)方法,中的key形参就是String
        
        A<Integer> key1 = new A();
        key1.setKey(20);
        System.out.println(key1.getKey());
        
        A key2 = new A();//不指定泛型,代表泛型类型为object类型
        key2.setKey(new Object());
        
    
        //相同的类,但在new对象的时候,指定不同的泛型时,不能相互赋值
        //key = key1;
    }
}
class A<T>{
    private T key;
    private int age;
    
    public void setKey(T key) {
        this.key = key;
    }
    
    public T getKey() {
        return this.key;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    
}

3.2 泛型接口

public class Test {
    public static void main(String[] args) {
        //未传入实参的类,创建对象时,指定泛型类型
        B1<Integer>b1 = new B1();
        b1.test(11);
        
        //传入实参的类,创建对象时,不能传入泛型类型,因为定义类时,已经定义过类型了
        B2 b2 = new B2();
        b2.test("李四");
    }
}

//接口泛型
interface IB<T> {
    T test(T t);
}

/**
 * 未传入泛型实参时,与泛型类的定义相同,在声明类的时候,需要将泛型的声明也一起加到类中
 * @author Zw
 *
 * @param <T>
 */
class B1<T> implements IB<T>{

    @Override
    public T test(T t) {        
        return t;
    }
    
}

/**
 * 如果实现接口时指定接口的泛型的具体数据类型
 * 这个类实现接口的所有方法的位置都要泛型替换实际的具体数据类型
 * @author Zw
 *
 */
class B2 implements IB<String>{

    @Override
    public String test(String t) {      
        return t;
    }
    
}

Java之泛型

标签:阶段   ima   this   main   strong   get   ring   nts   定义类   

原文地址:https://www.cnblogs.com/istart/p/12031993.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!