p10 第十章 泛型
    
    
(1), 自己写个基本的范型
     
(2), 泛型通配符
    
Info<?> i = new Info<String>();
    
    
(3), 受限泛型
    
Info<? extends Number> temp; 下限 : Info<? super String> temp;
    
    
(4), 泛型 与 子类继承的限制
    
    
* 一个类的子类可以通过对象多态性为其父类实例化,但是在泛型操作中,子类的泛型类型是无法使用父类的泛型类型接收的。
    
* Info<String> 不能使用 Info<Object> 接收
    
* 泛型中无法向上转型
    
    
(5), 泛型接口的两种实现方式
     
泛型方法
     
总结 : *1, 泛型可以使程序的操作更加安全,可以避免发生类转换异常
     
*2, 在程序中如果使用类时没有指定泛型,则泛型将被擦除掉,将使用 Object 接收参数
     
*3, 泛型方法可以定义在泛型类中,也可以定义在普通类中
     
*4, 泛型可以在接口中定义
     
*5, 在程序中定义没有方法的接口,称之为标识接口
    
(1), 自己写个基本的范型
(2), 泛型通配符
Info<?> i = new Info<String>();
(3), 受限泛型
Info<? extends Number> temp; 下限 : Info<? super String> temp;
(4), 泛型 与 子类继承的限制
* 一个类的子类可以通过对象多态性为其父类实例化,但是在泛型操作中,子类的泛型类型是无法使用父类的泛型类型接收的。
* Info<String> 不能使用 Info<Object> 接收
* 泛型中无法向上转型
(5), 泛型接口的两种实现方式
泛型方法
总结 : *1, 泛型可以使程序的操作更加安全,可以避免发生类转换异常
*2, 在程序中如果使用类时没有指定泛型,则泛型将被擦除掉,将使用 Object 接收参数
*3, 泛型方法可以定义在泛型类中,也可以定义在普通类中
*4, 泛型可以在接口中定义
*5, 在程序中定义没有方法的接口,称之为标识接口
package com.qunar.basicJava.javase.p10Generics;
/**
 * Author: libin.chen@qunar.com  Date: 14-5-20 18:28
 */
class Point<T> {
    private T var;
    Point() {
    }
    Point(T var) {
        this.var = var;
    }
    public T getVar() {
        return var;
    }
    public void setVar(T var) {
        this.var = var;
    }
}
public class GenericsDemo01 {
    public static void main(String[] args) {
        Point<Integer> p = new Point<>();
        p.setVar(30);
        System.out.println(p.getVar() * 2);
        Point<String> ps = new Point<>();
        ps.setVar("robby_chan");
        System.out.println(ps.getVar() + " haha");
    }
}
转载于:https://www.cnblogs.com/robbychan/p/3786507.html
 
