java泛型

泛型

泛型是具有占位符(类型参数)的类、结构、接口和方法,这些占位符是类、接口和方法所存储或使用的一个或多个类型的占位符。

  • 类型擦除
    -编码时采用泛型写的类型参数,编译器会在编译时时去掉,称为“类型擦除”。类型参数在编译后替换成Object,运行时虚拟机不知道泛型。

定义泛型

  • 泛型字符常用标志符
泛型标识符说明
E表示容器中的元素
T表示普通的JAVA类
K表示键
V表示值
N表示数据类型
?表示不确定的JAVA类型

泛型类

  • 泛型类定义在类上,用户实例化类时,才把类型确定下来。在<>中可以添加一个或者多个类型参数声明,如,<E,T>等
  • 语法结构
    public class 类型<泛型表示符号>{}
    

代码示例

public class demo01<T> {
    private T flag;

    public T getFlag() {
        return flag;
    }

    public void setFlag(T flag) {
        this.flag = flag;
    }
}

泛型接口

  • 语法结构
public interface 接口名<泛型符号>{}

代码示例

public interface demo02<T> {
    T getName(T name);
}

泛型方法

泛型方法指将方法的参数类型定义成泛型,以便在调用时接受不用类型的参数。调用泛型方法时,不需要告诉编辑器是什么类型,编译器可以自动推断出类型出来。

  • 语法结构
    无返回值
    public <泛型符号> void getName(泛型符号 name){}
    
    
    有返回值
    public <泛型符号> 泛型符号 getName(泛型表示符号){
    	return;
    }
    

代码示例

public class demo03 {
    
    public <T> void getName(T name){
        System.out.println(name);
    }

    public <T> T getMethod(T method){
        return method;
    }
}

泛型方法可变参数

  • 语法结构
public <泛型符号> void method(泛型符号 ...args){}

代码示例

public class demo05 {

    public <T> void method(T ...args){
        for (int i = 0; i <args.length ; i++) {
            System.out.println(args[i]);
        }
    }
}

无界通配符

“?”表示类型通配符,代替具体的类型,解决具体类型不确定的问题。

  • 语法结构
public void showFlag(Generic<?> generic){} 

代码示例

public class demo06<T> {

   private T age;

    public T getAge() {
        return age;
    }

    public void setAge(T age) {
        this.age = age;
    }
}
public class middle{

    public void method(demo06<?> a){
        System.out.println(a.getAge());
    }
}
public class demo06test {
    public static void main(String[] args) {
        middle middle = new middle();
        demo06<String> a6 = new demo06<>();
        a6.setAge("12");
        middel.method(a6);

        demo06<Integer> a66 = new demo06<>();
        a66.setAge(66);
        middel.method(a66);
    }
}

通配符的上限限定

上限限定表示通配符的类型是T类以及T类的子类或者T接口以及T接口的子接口

  • 语法结构
public void showFlag(Generic<? extends Number> generic){}

通配符的下限限定

下限限定表示通配符的类型T类以及T类的父类或者T接口以及T接口的父接口

  • 语法结构
public void showFlag(generic<? super Integer> generic){}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值