java学习笔记之泛型用法

泛型:jdk1.5版本以后出现的新特性,用于解决安全问题,是一个类安全机制。
好处:
   1.将运行期间出现问题呢classCastException,转移到来了编译时期,方便程序员解决问题。让运行事情问题减少,安全。
   2.避免出现强制转换麻烦。
泛型格式:通过<>来定义要操作的引用类型。
使用情况:
 通常在定义框架中很常见,只要见到<>就要定义型,<>用来修饰类型。
  当使用类型时,将集合中要存储的数据类型当做参数传递到<>即可。

泛型类:定义在类上
     当类中需要操作的引用数据类型不确定的时候,早期定义Object来完成扩展,现在定义泛型类来完成扩展

 

 代码如下 复制代码

package com.day14.wd;
//早期没有泛型时,可以抽取方法,进行定义
class  Teacher{
}
class  worker{
   
}
class Tool{
    private Object obj;
    public void setObject(Object obj){
       
        this.obj=obj;
    }
    public Object getObject(){
        return obj;
    }
}
//泛型后:
class  Utils<QQ>{
    private QQ q;
    public void setObject(QQ q){
        this.q=q;
    }
    public QQ getObject(){
      return q;
    }
   
}
public class GenericDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
         Tool tt=new Tool();
        tt.setObject(new worker());
        worker w=(worker) tt.getObject();
      

    
        Utils<Teacher> tc=new Utils<Teacher>();
        tc.setObject(new Teacher());//设置对象
        Teacher tr=tc.getObject(); //得到对象
    }

}/*
  泛型类定义的泛型,在整个类中有效。泛型类的对象明确要操作的具体类型后,所有的操作的类型固定。
  为了让不同的方法可以操作不同的类型,而且类型还不确定,那么可以将泛型定义在方法上。
*/

package com.day14.wd;

class Util{
    public<T> void show(T t){
        System.out.println("show:"+t);
       
    };
    public<T> void  print(T t){
        System.out.println("show:"+t);
       
    };
}
public class GenericDemo2 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
   Util dd=new Util();
   dd.show(new String("我要成功"));
   dd.show(new Integer(232));
   dd.print(new String("我一定要成功"));
  
    }

}//

特殊之处:静态方法不可以访问类上定义的泛型。如果,静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。定义在

修饰符和返回符之间 public static <T> void print(T t){};

-------------------?通配符-------------------
?通配符,可以理解为占位符
? extends E:可以接受E类型或者E的子类型,上限。
?  super E:可以接受E类型或者E的父类,下限

时间: 2024-10-31 01:17:14

java学习笔记之泛型用法的相关文章

Symfony2学习笔记之模板用法详解_php实例

本文实例讲述了Symfony2学习笔记之模板用法.分享给大家供大家参考,具体如下: 我们知道,controller负责处理每一个进入Symfony2应用程序的请求.实际上,controller把大部分的繁重工作都委托给了其它地方,以使代码能够被测试和重用.当一个controller需要生成HTML,CSS或者其他内容时,它把这些工作给了一个模板化引擎. 模板: 一个模板仅仅是一个文本文件,它能生成任意的文本格式(HTML,XML,CSV,LaTex...).最著名的模板类型就是PHP模板了,可以

java基础学习笔记之泛型_java

泛型 将集合中的元素限定为一个特定的类型. 术语 ArrayList<E> -- 泛型类型 ArrayList -- 原始类型 E -- 类型参数 <> -- 读作"typeof" ArrayList<Integer> -- 参数化的类型 Integer -- 实际类型参数 几点注意: 参数化类型和原始类型相互兼容 ArrayList collection1 = new ArrayList<Integer>();//通过,无warning

java学习笔记10--泛型总结

集合类中的数据类型 集合类中可以存储各种数据,数据一旦存入,其类型均会转化为Object类型.从集合类中取出数据时,一般均需要将Object类型转换回存入之前的实际类型 Vector v=new Vector(); v.add("张三"); //存入字符串 String name=(String)v.get(0); //强制类型转换,OK v.add(new Date()); //存入当前时间对象,OK // 由于Date类型不能转换为String,下面语句会在运行时发生错误,但这种错

Java学习笔记

笔记 本笔记是在看浙大翁恺老师的视频教学时所做,希望对Java初学者有帮助! 一.Java基础1.正确认识Java(1)Java是一种有生产力的OOP语言,C++能做的Java都能做(2)Java与网络关系不大,更不是用来做网页的(3)Java是UNIX世界的产物,具有UNIX的思想(4)Java在国外广泛的被用来做各种应用2.Java历史(1)Brithday:May 23,1995(2)1991:Set-Top box:Jame Gosling(3)1994:OAK and FirstPer

java 学习笔记(入门篇)_java的安装与配置_java

  学习Java已经很长时间了,但是总感觉基础不是很好,有时候遇到一些平时不常见的问题就会无从下手,也从侧面显现了自己的一些问题.所以,打算写Java的随手笔记来巩固基础,加强学习.今天是第一篇,主要是java的安装,配置,也就是常说的Hello world.   一.下载   进入Oracle的官网,下载Java的jdk,   二.安装   安装就简单了,只需要下一步就可以,路径可以根据需要自己选择.   三.配置    安装完jdk后还不能来编译程序,因为还需要配置java 的jdk.进入的

java 学习笔记

笔记 JAVA的多线程 一.线程基本概念 将1个程序转换成多个独立运行的子任务.每个子任务都叫做一个线程. "进程"是指一种"自包容"的运行程序.有自己的地址空间.一个进程可以容纳多个同时执行的线程. 事实上,多线程最主要的一个用途就构建1个"反应灵敏"的用户界面. 二.线程的使用 1. 创建一个线程 最简单的方法就是从Thread类继承这个类,包含了创建和运行线程所需的一切东西. Thread最重要的是run方法,继承类必须对之进行重载,使其按

java学习笔记7--Polymorphism

笔记 Polymorphism 多态(polymorphism)也被称为动态绑定『dynamic binding』.后绑定『late binding』或运行时绑定『run-time bingding』.它的意思是要在程序运行的时候,根据对象的类型来决定该绑定哪个方法.多态性是继数据抽象和继承之后的,面向对象的编程语言的第三个基本特性. 绑定(binding): 将方法的调用连到方法本身前绑定(early binding): 当绑定发生在程序运行之前时(就是由编译器或连接器负责)后绑定(late

java学习笔记--Hiding implementation

笔记 hiding the implementation这句话讲得很好:In any relationship, it's important to have boundaries that are respected by all parties involved. 不管你们是什么关系,有一个彼此尊重的界限是很重要的. #----CLASSPATH(要大写,最好加上当前目录.):java 解释器会在以下两个地方查找.class文件: 1. jdk所在的标准目录 2. 路径 = 以CLASSPA

java学习笔记9--内部类总结

java内部类分为: 非静态内部类.静态内部类.局部内部类.匿名内部类 内部类的共性: (1)内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 . (2)内部类不能用普通的方式访问.内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的 . (3)内部类声明成静态的,就不能随便的访问外部类的成员变量了,此时内部类只能访问外部类的静态成员变量 . java 中的内部类和接口加在一起,可以的解决常被