Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 280|回复: 0

[泛型学习]java泛型的一些常见例子

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-28 23:55:30 | 显示全部楼层 |阅读模式
    1.     /**
    2.     * @author Rollen-Holt 使用泛型
    3.     */
    4.     class Test< T, V> {  
    5.         private T name;  
    6.         private V age;  
    7.         Test() {  
    8.         }  
    9.         public T getName() {  
    10.             return name;  
    11.         }  
    12.         public void setName(T name) {  
    13.             this.name = name;  
    14.         }  
    15.         public V getAge() {  
    16.             return age;  
    17.         }  
    18.         public void setAge(V age) {  
    19.             this.age = age;  
    20.         }     
    21.         public static void main(String[] args) {  
    22.             Test< String, Integer> he = new Test< String, Integer>();  
    23.             he.setAge(10);  
    24.             he.setName("Rollen Holt");  
    25.             System.out.println(he.getName() + ":" + he.getAge());  
    26.         }  
    27.     }
    28.     /**  
    29.      *   
    30.      * @author Rollen-Holt 泛型类的构造方法定义  
    31.      */  
    32.     class Test< T, V> {  
    33.         private T name;  
    34.         private V age;  
    35.         Test(T name, V age) {  
    36.             this.age = age;  
    37.             this.name = name;  
    38.         }  
    39.         public T getName() {  
    40.             return name;  
    41.         }  
    42.         public V getAge() {  
    43.             return age;  
    44.         }     
    45.         public static void main(String[] args) {  
    46.             Test< String, Integer> he = new Test< String, Integer>("Rollen", 12);  
    47.             System.out.println(he.getName() + "  " + he.getAge());  
    48.         }  
    49.     }
    50.     /**  
    51.      * @author Rollen-Holt 使用通配符  
    52.      */  
    53.     class info< T> {  
    54.         private T name;  
    55.         info(T name) {  
    56.             this.name = name;  
    57.         }  
    58.     }  
    59.     class Test {  
    60.         public static void function(info< ?> temp) {  
    61.             System.out.println("内容: " + temp);  
    62.         }  
    63.         public static void main(String[] args) {  
    64.             info< String> demo = new info< String>("Rollen");  
    65.             function(demo);  
    66.         }  
    67.     }
    68.     /**  
    69.      * @author Rollen-Holt 泛型上限  
    70.      */  
    71.     class info< T> {  
    72.         info(T age) {  
    73.             this.age = age;  
    74.         }  
    75.         private T age;  
    76.     }  
    77.     class Test {  
    78.         public static void function(info< ? extends Number> temp) {  
    79.             System.out.println("内容" + temp);  
    80.         }  
    81.         public static void main(String[] args) {  
    82.             info< Integer> demo = new info< Integer>(1);  
    83.             function(demo);  
    84.         }  
    85.     }
    86.     /**  
    87.      * @author Rollen-Holt 泛型下限  
    88.      */  
    89.     class info< T>{  
    90.         info(T age){  
    91.             this.age=age;  
    92.         }  
    93.         private T age;  
    94.     }  
    95.     class hello{  
    96.         public static void function(info< ? super String> temp){  
    97.             System.out.println("内容"+ temp);  
    98.         }     
    99.         public static void main(String[] args){      
    100.          // 此处只能使用String 或者Object  
    101.           info< String> demo=new info< String>("Rollen");  
    102.           function(demo);  
    103.         }  
    104.     }

    105.     /**
    106.      * @author Rollen-Holt 泛型和子类继承的限制  
    107.      */  
    108.     class info< T>{  
    109.     }  
    110.     class hello{  
    111.         public static void main(String[] args){  
    112.         info< String> demo1=new info< String>();  
    113.         info< Object> demo2=new info< Object>();  
    114.         //demo2=demo1;   此处错误      
    115.         }  
    116.     }  
    117.     /**  
    118.      * 上面的例子说明,一个类的子类可以通过多态性被其父类实例化  
    119.      * 但是在泛型操作中,子类的泛型类型是无法被其父类的泛型类型实例化的。  
    120.      */  
    121.     如果允许上面的条语句的话,会出现:  
    122.     Exception in thread "main" java.lang.Error: Unresolved compilation problem:   
    123.         Type mismatch: cannot convert from info< String> to info< Object>
    124.         at hello.main(hello.java:12)
    125.     /**  
    126.      * @author Rollen-Holt 泛型接口的实现1  
    127.      */  
    128.     interface info< T> {  
    129.         public void say();  
    130.     }  
    131.     // 直接在子类之后声明泛型  
    132.      
    133.     class hello< T> implements info< T>{  
    134.         public static void main(String[] args){  
    135.             info< String> demo = new hello< String>();  
    136.             demo.say();  
    137.         }  
    138.         public void say(){  
    139.             System.out.println("hello");  
    140.         }  
    141.     }
    142.     /**  
    143.      * @author Rollen-Holt 泛型接口的实现2  
    144.      */  
    145.     interface info< T> {  
    146.         public void say();  
    147.     }  
    148.     // 在子类实现的接口中明确给出泛型类型  
    149.     class hello implements info< String>{  
    150.         public static void main(String[] args){  
    151.             info< String> demo = new hello();  
    152.             demo.say();  
    153.         }  
    154.         public void say(){  
    155.             System.out.println("hello");  
    156.         }  
    157.     }
    158.     /**  
    159.      * @author Rollen-Holt 使用泛型统一传入参数的类型  
    160.      */  
    161.     class info< T> {  
    162.         private T var;  
    163.         public T getVar(){  
    164.             return var;  
    165.         }  
    166.         public void setVar(T var){  
    167.             this.var = var;  
    168.         }  
    169.         public String toString(){  
    170.             return this.var.toString();  
    171.         }  
    172.     }  
    173.     class hello{  
    174.         public static void main(String[] args){  
    175.             info< String> demo1=new info< String>();  
    176.             info< String> demo2=new info< String>();  
    177.             demo1.setVar("Rollen");  
    178.             demo2.setVar("Holt");  
    179.             printAdd(demo1, demo2);  
    180.         }  
    181.         // 此处传递的都是同一个String类型的  
    182.         public static < T> void printAdd(info< T> demo1, info< T> demo2){  
    183.             System.out.println(demo1.getVar()+" "+demo2.getVar());  
    184.         }  
    185.     }
    复制代码

       
         
         
          
          

            
          

            
          
         
       

      


    源码下载:http://file.javaxxz.com/2014/10/28/235530500.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-6-15 21:30 , Processed in 0.420314 second(s), 34 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表