【JavaSE】Generic<T>泛型类与泛型方法

泛型类与泛型方法

<T,E,K,V>
class
修饰符 class 类名<类型>{}
method
修饰符 <类型> 返回值类型 方法名(T t){}
优点:把运行时期的问题提前到 编译期避免了强制类型转换
~~ ---------------------分割线------------------------ ~~

泛型(generic)概述和基本使用

A:泛型概述

集合边上有一个尖括号,尖括号指的就是泛型.
限定集合存储的数据类型,如果加上这个引用数据类型,
就告诉你这个集合只能存储该类型对象和该类型的子类对象.

B:泛型好处

提高安全性(将运行期的错误转换到编译期)
省去强转的麻烦

C:泛型基本使用

<>中放的必须是引用数据类型,因为里面

D:泛型使用注意事项

前后的泛型必须一致,或者后面的泛型可以省略不写(1.7的新特性菱形泛型)

泛型类:

泛型类的声明很简单,在类名后添加一对尖括号,在尖括号里声明泛型的参数名即可,可以声明多个类型参数。参数名理论上没有限制,为了方便阅读,一般的参数名命名规则:

E - 元素,主要由Java集合(Collections)框架使用。
K - 键,主要用于表示映射中的键的参数类型。
V - 值,主要用于表示映射中的值的参数类型。
N - 数字,主要用于表示数字。
T - 类型,主要用于表示第一类通用型参数。
S - 类型,主要用于表示第二类通用类型参数。
U - 类型,主要用于表示第三类通用类型参数。
V - 类型,主要用于表示第四个通用类型参数。
class xxx{}

class xxx<T,U>{}

泛型方法:

泛型方法的声明是在方法的返回值前面添加尖括号。

public void test(T t){}

只有在方法的返回值前面加了<>才表明为泛型方法,否则即使某个方法的参数列表含有泛型参数,也只是个普通方法,泛型方法是独立于类存在的,可以定义在普通类中也可以定义在泛型类中,所以说泛型方法中的参数与类中的参数并无关系,即使同名也一样。

并且泛型方法具有自动推断类型功能。

类型推断:泛型方法会根据参数列表和返回值自动推断出类型参数的真实类型。

Generic

package com.atlin.genericmethod;

/**
 * program@: day15_CollSet
 * description@:
 * create@: 2020-10-11 17:14* @author: lin's
 */

/*
public class Generic {
    public void show(String s){
        System.out.println(s);
    }
    public void show(Integer i){
        System.out.println(i);
    }
    public void show(Boolean b){
        System.out.println(b);
    }

}
*/

/*
//泛型类改进
public class Generic<T>{
    public void show(T t){
        System.out.println(t);
    }
}
*/

//泛型方法改进
public class Generic {
    public<T> void show(T t){
        System.out.println(t);
    }
}

GenericDemo

packagecom.atlin.genericmethod;;

/**
 * program@: day15_CollSet
 * description@:
 * create@: 2020-10-11 17:17* @author: lin's
 */

public class GenericDemo {
    public static void main(String[] args) {
 /*       Generic g = new Generic();
        g.show("林青霞");
        g.show(23);
        g.show(true);

        g.show(13.45);*/
/*
        Generic<String> g1 = new Generic<String>();
        g1.show("林青霞");
        Generic<Integer> g2 =new Generic<Integer>();
        g2.show(18);
        Generic<Boolean> g3 = new Generic<Boolean>();
        g3.show(true);*/

        Generic g1 =new Generic();
        g1.show("lin");
        g1.show(12.122F);
        g1.show(true);
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值