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

《疯狂Java讲义》(二十七)----泛型

时间:2017-02-09 18:46:04      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:包含   method   构造器   信息   方法   log   this   arraylist   end   

  • 菱形语法

List<String> strList = new ArrayList<String>();

Java7 后允许在构造器后不需要带完整的泛型信息,只要给出一对尖括号即可。

List<String> strList = new ArrayList<>();

  • 泛型接口/类

可以为任何类/接口增加泛型声明

class Apple<T> {
    private T info;
    public Apple() {
        
    }
    
    public Apple(T info) {
        this.info = info;
    }
    
    public void setInfo(T info) {
        this.info = info;
    }
    
    public T getInfo() {
        return this.info;
    }
}
public class GenericClassDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Apple<String> a1 = new Apple<>("Apple");
        System.out.println(a1.getInfo());
        Apple<Double> a2 = new Apple<>(5.97);
        System.out.println(a2.getInfo());
    }

}

当创建带泛型声明的自定义类,为该类定义构造器时,构造器名还是原来的类名,不要增加泛型声明。例如,Apple<T>,构造器名依然是Apple,不是Apple<T>.

 

  • 从泛型类派生子类

当创建了带泛型声明的接口/父类之后,可以为该接口创建实现类,或从该父类派生子类,但需要指出的是,当使用这些接口/父类时不能在包含类型形参。

class Apple<T> {
    protected T info;
    public Apple() {
        
    }
    
    public Apple(T info) {
        this.info = info;
    }
    
    public void setInfo(T info) {
        this.info = info;
    }
    
    public T getInfo() {
        return this.info;
    }
}

class A1 extends Apple<String> {
    public A1(String info) {
        this.info = info;
    }
}
public class GenericClassDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Apple<String> a1 = new Apple<>("Apple");
        System.out.println(a1.getInfo());
        Apple<Double> a2 = new Apple<>(5.97);
        System.out.println(a2.getInfo());
        
        A1 aa1 = new A1("Apple");
        System.out.println(aa1.getInfo());
    }

}

不管为泛型的类型参数传入哪一种类型实参,对于Java来说,它们依然被当成同一个类处理。因此在静态方法/静态初始化块或者静态变量的声明和初始化中不允许使用类型形参。

 

《疯狂Java讲义》(二十七)----泛型

标签:包含   method   构造器   信息   方法   log   this   arraylist   end   

原文地址:http://www.cnblogs.com/IvySue/p/6383281.html

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