黑马程序员----java 泛型详解
来源:互联网 发布:淘宝怎么提升浏览量 编辑:程序博客网 时间:2024/05/22 00:48
---------------------- android培训、java培训、期待与您交流! ---------------------
一.泛型(Generic type 或者generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型(引用数据类型)进行参数化的类。使用泛型可以把运行时期的错误转移到编译时期,提高了安全性,是1.5版本后的新特性。
二.类中的泛型
定义在类后,类中定义了泛型,方法中可以再定义其他类型
public class jihe16 {public static void main(String[] args){dy<String> a = new dy<String>();a.setQQ(new String("abc"));String s =a.getQQ();System.out.println(s);}}/* *类中的泛型 * */class dy<QQ>{private QQ qq;public void setQQ(QQ qq){this.qq=qq;}public QQ getQQ(){return qq;} }三.方法中的泛型
定义在返回值前面,修饰符后面
public class jihe17 {public static void main(String[] args){child<String> c = new child<String>();c.print("hahah");c.print(4);c.print(true);c.println("hajs");child.print1(true);}}class child<T>{//类中定义泛型。方法可以同时定义别的类型的泛型public <Q>void print(Q q){System.out.println(q);}public void println(T t){System.out.println(t);}public static <E> void print1(E e){//静态方法,在类刚加载时就存在,可以在静态方法定义自己的泛型,但不可以 //定义和类上一致的泛型。System.out.println(e);}四.接口中的泛型
public class jihe18 {public static void main(String[] args){imp<Boolean> i = new imp<Boolean>();i.show(true);imp2 i1 = new imp2();i1.show("javaStudy!");}}interface imple<E>{ void show(E e);}class imp<E> implements imple<E>{//类实现接口方法一:public void show(E e) {System.out.println(e);}}class imp2<Stirng> implements imple<String>{//类实现方法二:public void show(String s){System.out.println(s);}}五.泛型中的通配符
class Info<T>{ private T var ; // 定义泛型变量 public void setVar(T var){ this.var = var ; } public T getVar(){ return this.var ; } public String toString(){ // 直接打印 return this.var.toString() ; } }; public class GenericsDemo14{ public static void main(String args[]){ Info<String> i = new Info<String>() ; // 使用String为泛型类型 i.setVar("it") ; // 设置内容 fun(i) ; } public static void fun(Info<?> temp){ // 可以接收任意的泛型对象 System.out.println("内容:" + temp) ; } };六.泛型上限
class Info<T>{ private T var ; // 定义泛型变量 public void setVar(T var){ this.var = var ; } public T getVar(){ return this.var ; } public String toString(){ // 直接打印 return this.var.toString() ; } }; public class GenericsDemo17{ public static void main(String args[]){ Info<Integer> i1 = new Info<Integer>() ; // 声明Integer的泛型对象 Info<Float> i2 = new Info<Float>() ; // 声明Float的泛型对象 i1.setVar(30) ; // 设置整数,自动装箱 i2.setVar(30.1f) ; // 设置小数,自动装箱 fun(i1) ; fun(i2) ; } public static void fun(Info<? extends Number> temp){ // 只能接收Number及其Number的子类 (上限) System.out.print(temp + "、") ; } }七.泛型下限
class Info<T>{ private T var ; // 定义泛型变量 public void setVar(T var){ this.var = var ; } public T getVar(){ return this.var ; } public String toString(){ // 直接打印 return this.var.toString() ; } }; public class GenericsDemo21{ public static void main(String args[]){ Info<String> i1 = new Info<String>() ; // 声明String的泛型对象 Info<Object> i2 = new Info<Object>() ; // 声明Object的泛型对象 i1.setVar("hello") ; i2.setVar(new Object()) ; fun(i1) ; fun(i2) ; } public static void fun(Info<? super String> temp){ // 只能接收String或Object类型的泛型 System.out.print(temp + "、") ; } }
0 0
- 黑马程序员----java 泛型详解
- 黑马程序员 java 反射详解
- 黑马程序员----java GUI详解
- 黑马程序员----java反射详解
- 黑马程序员---java继承详解
- 黑马程序员---java多线程详解
- 黑马程序员---java反射详解
- 黑马程序员---java网络详解
- 黑马程序员 java反射详解
- 黑马程序员_泛型详解
- 黑马程序员-java关键字static详解
- 黑马程序员----java IO流详解
- 黑马程序员----java包装类详解
- 黑马程序员-----Java基础-----集合框架详解
- 黑马程序员-----Java基础-----多线程的详解
- 黑马程序员---Java多线程的用法详解
- 黑马程序员 java枚举使用详解
- 黑马程序员--Java注解以及泛型
- [C++]LeetCode: 58 Maximum Subarray
- Triangle -- Leetcode
- win7与ubuntu虚拟机共享文件
- java执行需要参数的bat文件
- 面向对象三要素
- 黑马程序员----java 泛型详解
- 经典重读《信号与系统》-第四章
- 全志八核H8芯片可以同时播放13个720p视频窗口
- [转]QT小技巧—更好管理项目
- 九度OJ 1021 统计字符 (模拟)
- 【小竹摘抄】我的互联网方法论 ----周鸿祎自述 摘抄(4)
- MongoDB索引
- 影片《刺杀金正恩》中的地理学错误和穿帮镜头(仅供娱乐)
- Ring3调试流程