java泛型写法(java泛型中-和T的区别)

发布时间:2025-03-05
本文主要介绍java泛型编写(用java泛型?和t),下面一起看看java泛型编写(用java泛型?和t)相关资讯。
java-泛型泛型描述泛型是jdk5中引入的新特性。泛型提供了编译时类型安全检测机制,允许程序员在编译时检测非法类型。
泛型的本质是参数化类型,就是为一个类型指定一个参数,然后在使用的时候指定这个参数的具体值,这样在使用的时候就可以确定类型了。这种参数类型可以用在类、接口和方法中,分别称为泛型类、泛型接口和泛型方法。
为什么要用泛型?泛型的好处是在编译时检查类型安全,所有强制都是自动隐式的,提高了代码的复用率。
安全
//集合不使用泛型list list = new arraylist;list . add( 微笑 );list . add(30);//正常编译//集合使用泛型liststring new list = new arraylist;new list . add( 微笑 );new list . add(30);//编译时没有正确使用泛型后,编译定义的集合newlist时,add(30)会编译失败。
相当于告诉编译器每个集合接收的是什么类型的对象,编译器会在编译时检查类型,判断是否插入了错误类型的对象,这使得程序更加安全,增强了程序的健壮性。
消除转换
//不使用泛型list list = new arraylist;list . add( 微笑 );string name =(string)list . get(0);//使用泛型liststring new list = new arraylist;new list . add( 微笑 );string newname = new list . get(0);使用泛型的另一个好处是消除了代码中的许多强制类型转换,这使得代码更具可读性,并减少了出错的机会。
提高性能
在非泛型编程中,将简单类型作为对象传递会导致装箱和取消装箱操作,这两种操作的开销都非常大。引入泛型后,装箱和拆箱操作不再需要,所以运行效率相对较高,尤其是在集合操作频繁的系统中,该特性带来的性能提升更为明显。
泛型变量有固定的类型,使用时已经知道是值类型还是引用类型,避免了不必要的装箱和解包操作。
复用性
提高了代码的可重用性。
使用泛型泛型有三种使用方法
通用类
在类上定义泛型
公共类classname t {}泛型类型必须是引用类型(非基元数据类型)。
listint list = new arraylist;//编译异常使用泛型数组,无法初始化。
class generictestt { private t[]值;public void setvalue(t value){ this . values = new t[3];//编译异常} }//由于数组已初始化,需要开辟内存空间。当具体类型不明确时,编译器可以 无法公开确切的空间大小。类的泛型可以 不能在静态方法中使用。
class generic testt { private t value;公共静态void测试(tvalue){//编译异常system . out . println(value);} }//因为静态方法单独属于类,而类的泛型属于对象声明的静态属性,所以不能使用类的泛型。
class generictestt {私有静态t值;//编译异常公共泛型测试(tvalue) {system。out.println(值);} }//因为静态属性单独属于类,而类的泛型属于声明的对象定义泛型类,所以在类名后面加一对尖括号,在尖括号里填入类型参数。可以有多个参数,用多个参数来分隔。
公共类classnam:任意型
:集中的元素类型元素。
k: k:key-value表单值
通用
public class generic { public static void main(string[]args){ genericteststring generic = new generic test( 微笑 );system . out . println(generic . getvalue);} }//定义泛型类generic testt { private tvalue公共图书馆ic generictest(t值){ this.value = value} public t getvalue {返回值;} public void setvalue(t value){ this . value = value;}}通用接口
在接口上定义泛型
通用接口使用的公共接口接口名称t {}。
继承和利用
接口generic interface a t { t run(t value);}//不指定泛型类,默认使用对象接口泛型接口扩展泛型接口{ }//继续使用父接口泛型。不要指定特定的泛型接口泛型接口扩展泛型接口{}//为实现指定特定的泛型类型接口泛型接口扩展泛型接口{ }。
//接口实现时,不指定具体的泛型类,默认为对象类泛型类a实现者泛型接口a { @ override public object run(object value){ return null;} }//在接口实现过程中,指定具体的泛型类c类实现泛型接口string { @ override public string run(string value){ return null;} }//接口继承时已经指定接口继承泛型,不需要指定类泛型d类实现者generic interface { @ override public string run(string value){ return null;}}通用方法
在方法上定义泛型
public t returntype函数名(t variablename) {}泛型方法可以是普通方法、静态方法或构造函数方法。
类genericclassa实现genericinterfacea { @ override public object run(object value){ return null;}//构造函数public t泛型类a (t name) {system。out.println(名称);}//公共方法public t void test a (t name) {system。out.println(名称);}//静态方法public static t void testb(tname){ system . out . println(name);}}是否有泛型方法与其类是否泛型无关。
使用泛型方法时,通常不需要指定类型参数,因为编译器会为我们找出具体的类型。这被称为类型参数推理。类型推理只对赋值操作有效,它不 不要在其他时间工作。
public class generic { public static void main(string[]args){ generic function generic function = new generic function;//会自动类型推理generic function . run( 微笑 );} } class generic function { public t void run(t name){ system . out . println(name);}}标签:
类型方法
了解更多java泛型编写(用java泛型?和t)相关内容请关注本站点。
上一个:温哥华国际机场三字代码是什么(一文详解温哥华国际空运机场)
下一个:长三角旅游年卡景点名单+价格+发售时间

DF-5型高温沥青软化点测定仪使用说明书
如何正确安装HYDAC压力传感器
pci-e和m2一样吗
乐鸟电力运维云平台,*节省运帷成本
冷却猪肉综合保鲜技术的研究
*多若特dorot废水空气阀dav
DHL国际快递对货物包装尺寸有哪些要求?(哪种包装适合跨境电商包裹)
大陆到台湾物流价格 大陆到台湾专线物流
可以将一台带电池电子产品的笔记本电脑送到国外吗?,笔记本电脑带电池的电子产品可以寄到国外吗
跨境物流仓储管控流程要注意什么,跨境物流仓储管控流程要注意什么