泛型类的初步认识

只能用于声明,不能用于定义 
- 泛型是一个不存在的类,它不能实例化 
- int i=10;// int i;声明   i=10;// 定义 
- 语法格式: 类声明的时候类名的右边可以加上一对尖括号,尖括号中写一个泛型通配符

特性

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

对此总结成一句话:泛型类型在逻辑上看以看成是多个不同的类型,实际上都是相同的基本类型。

泛型类的基本格式:

class 类名称 <泛型标识:可以随便写任意标识号,标识指定的泛型的类型>{
  private 泛型标识 /*(成员变量类型)*/ var; 
  .....

  }
}

例子:

//此处T可以随便写为任意标识,常见的如T、E、K、V等形式的参数常用于表示泛型
//在实例化泛型类时,必须指定T的具体类型
public class Generic<T>{ 
    //key这个成员变量的类型为T,T的类型由外部指定  
    private T key;

    public Generic(T key) { //泛型构造方法形参key的类型也为T,T的类型由外部指定
        this.key = key;
    }

    public T getKey(){ //泛型方法getKey的返回值类型为T,T的类型由外部指定
        return key;
    }
}

 

Manage类

如果写有list.sdd(10);则会报错,其中用到泛型的地方都会被替换为你所指定的类型,意味着别的类型就会报错。

public class Manage {
    public static void main(String[] args) {
        // 使用MyList 创建对象时需要指定一个具体的类型
        // 必须是一个类型
        MyList<String> list = new MyList<String>();
        list.add("A");
        //list.add (10);

        String s = list.get(0);
        s.hashCode ();
        //s.equals ();
        // 泛型被指定为固定的类型之后,再使用这个对象的方法时
        // 其中用到泛型的地方都会被替换为你所指定的类型
        System.out.println(s);
        System.out.println(s.hashCode());
    }
}

MyList类

泛型类

public class MyList<E> {
    Object[] valueList = {"a","b","c"};
    int size;

    /**
     * 泛型用于参数
     *
     * @param e
     */
    public void add(E e) {
        valueList[size++] = e;
    }

    public E get(int index) {
        // valueList[index] 取出来就是Object类型 主动转为<E>类
        return (E) valueList[index];
    }
}

初学者! 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值