JAVA-泛型类

泛型类

    目的:解决类型转换
    概念:类定义时,并不会设置类中的属性或方法中的参数的具体类型,而是在使用时再定义。
    泛型的特色声明符号:<>   例子如下:
          class MyClass<T>{
                    T value1;                       其中这里的T被称作类型参数。
                }
    一般在泛型中有一系列的默认:
1、T-一般的任何类
2、E-Element元素或者Exception 异常
3、K-kye
4、V-Value ,与K相互配合使用
    泛型类定义了之后的使用例子:
        MyClass<String>myClass1 =new MyClass<String>();
    要注意,<>中只接受封装类,例如Integer等
    同时还可以接受多个泛型 如class MyClaee<T,E>{
                                                        T value1;
                                                        E value2;
                                                        }
    多个泛型的定义:MyClass<String,Integer>myClass1 =new MyClass<String,Integer>();

    然而可以简略成为MyClass<String,Integer>myClass1 =new MyClass<>();

泛型方法
    
    示例 class MyClass{
                    public <T> void testMethod(T t){
                                ~~~~~
                        }
    方法中的T被称为参数化类型。
    声明的类型参数,其实也是可以当做返回值的类型的。例如
    public <T> testMethod1(T t){
        System.out.println(y);
    }
    public <T> T testMethod2(T t){
        return t;
    }
以下是使用方法:
    MyClass<String>myClass = new MyClass <>();
    myClass.testMethod1("泛型类");------>普通方法
    Integer i = testMethod2 (100);----------->泛型方法
      System.out.println(i);

    注意,泛型方法始终以自己定义的类型参数为准。

泛型接口

    示例       interface Imessage<T>{
                    public void print <T t>;
                  }
实现该接口有两种方法:1、子类定义时候继续使用泛型。2、在子类实现接口的时候明确给出类型。
1、示例
        interface Imessage<T>{
            public viod print<T t>;
        }
        class MessageImpl<T> implements Imessage<T>{
            @override
                public void print(T t ){
                    System.out.println(t);
                }
        }
        main方法{
            Imessage<String> msg = new MessageImpl();
            msg.pring("HELLO");
        }
2、示例
        interface Imessage<T>{
            public viod print<T t>;
        }
        class MessageImpl<T> implements Imessage<String>{
            @override
                public void print(String t ){
                    System.out.println(t);
                }
        }
        main方法{
            Imessage<String> msg = new MessageImpl();
            msg.pring("HELLOOOO");
        }

泛型擦除
    泛型信息仅存在于代码编译阶段,在进入JVM之前,与类型相关信息会被擦除。
    如果类型擦除的时候没有设置上限类型,则自动转换成Object类型,如果有设置上限的话则转至上限类型。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值