泛型类,泛型方法,泛型接口

泛型类,泛型方法及泛型接口

泛型类
  • 泛型指的是在类定义的时候并不会设置类中的属性或方法中参数的具体类型,而是在类使用时再进行定义
  • 但如果要进行这种泛型的操作,就必须做一个类型标记的声明
  • 泛型类的基本语法
class MyClass<T> {
	T  value1;
}
  • 尖括号<>中的被称作是类型参数,用于指代任何类型(实际上T可以任意写,但出于规范的目的,Java中建议用单个大写字母代表类型参数)
  • T:代表一般的任何类
  • E:代表Element的意思,或者Exception异常的意思
  • K,V:键值对
  • S:代表Subtype
  • 如果一个类被<T>的形式定义,那么它就被成为泛型类
MyClass<String> myClass1 = new MyClass<String>();
MyClass<Integer> myClass2 = new MyClass<Integer>();

  • 泛型只能接收类,所有的基本类型数据必须使用包装类
  • 泛型类可以接收多个参数类型
class MyClass<T,E>{
    T value1;
    E value2;
}
public class Test{
    public static void main(String[] args) {
        MyClass<String,Integer> myClass1 = new MyClass<String,Integer>();
    }
}
泛型方法
  • 泛型不仅可以定义类,还可以单独定义方法
class MyClass<T>{
   public <T> void fun(T t){
       System.out.println(t);
   }
}
  • 这里的<T>是一个站位,告诉我们它是一个泛型方法
  • 泛型方法中的 T 被称为参数化类型,它不是真正运行的参数
泛型类与泛型方法共存
  • 当泛型类与泛型方法共存时,泛型类中的类型参数与泛型方法中的类型参数没有关系,泛型方法始终以自己定义的类型参数为准
class MyClass<T>{
   public void test1(T t){
       System.out.println(t);
   }
   public <T> T test2(T t){
       return t;
   }
}
MyClass<T>是泛型类;
test2是一个泛型方法;
两者的类型参数没有相应的联系
泛型方法始终以自己定义的参数类型为准
所以为了避免混淆,如果一个泛型类中存在泛型方法,两者最好不要同名
泛型接口
  • 泛型定义在接口里面,即称之为泛型接口
interface IMessage<T>{
    public void print(T t);
}
  • 对于这个接口的实现子类有两种做法
  • 在子类定义时继续使用泛型
interface IMessage<T>{//在接口上定义了泛型
    public void print(T t);
}
class MessageImpl<T> implements IMessage<T>{
    public void print(T t){
        System.out.println(t);
    }
}
public class Test{
    public static void main(String[] args) {
       IMessage<String> msg = new MessageImpl();
       msg.print("hello world");
    }
}
  • 在子类实现接口的时候明确给出具体类型
interface IMessage<T>{//在接口上定义了泛型
    public void print(T t);
}
class MessageImpl implements IMessage<String >{
    public void print(String t){
        System.out.println(t);
    }
}
public class Test{
    public static void main(String[] args) {
       IMessage<String> msg = new MessageImpl();
       msg.print("hello world");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值