编程语言之泛型(一)

编程语言之泛型(一)介绍下编程语言中一种泛型的写法 不管在此之前你有没有听过这个词 看完这篇以及后续应该会对泛型有个清楚的认识了

大家好,欢迎来到IT知识分享网。

介绍下编程语言中一种泛型的写法,不管在此之前你有没有听过这个词,看完这篇以及后续应该会对泛型有个清楚的认识了。

先不解释泛型的概念是什么,所以还是以代码实战的方式来演示什么是泛型,看一个简单的例子:

public class LinuxConfig{ public void doLinuxInit(){ System.out.println("linux init"); } } public class Config { private String configName; private String configNumber; private LinuxConfig linuxConfig; }

上面是一个Config类,很简单,存储配置名称、配置编号以及具体的Linux系统配置的信息。下面将会随着需求的不断迭代,对这个类逐步地改进:

需求迭代一:Config类需要同时适配Windows系统和Linux系统

这时候很简单的可以想到只要再增加一个Windows配置的类就行:

public class WindowsConfig{ public void doWinInit() { System.out.println("windows init"); } } public class LinuxConfig{ public void doLinuxInit(){ System.out.println("linux init"); } } public class Config { private String configName; private String configNumber; private LinuxConfig linuxConfig; private WindowsConfig windowsConfig; }

增加了windows的配置类后,又在Config中添加了关联,看上去完美解决上面的需求;但这时候需求再次迭代….

需求迭代二:Config类除了适配Windows系统和Linux系统,还需要适配Mac系统

其实这时候聪明的你可能已经意识到,问题来了,每增加一次系统适配,就得在Config这个类里面加入一段代码,试想,如果每次适配新系统时,只需要增加一个新的类,而不需要在原有的类上面增加代码,那该多好。

于是想到了一个法子:利用类的继承这个特性来创造一个基类,让所有的系统都继承这个基类,代码改善后如下:

public class OSConfig{ } public class LinuxConfig extends OSConfig{ .......... } public class WindowsConfig extends OSConfig{ ............ } public class MacConfig extends OSConfig{ .......... } public class Config { private String configName; private String configNumber; private OSConfig osConfig; public Config(String configName , String configNumber , OSConfig osConfig){ } }

在创建了OSConfig这个基类后,把Config这个类中的关联项也做了替换,这样每次增加一个系统适配的时候,就只需要继承这个基类即可,不需要再改动Config这个类中的代码了。

下面就请出今天的主题泛型,来看看泛型如何做到在不增加基类的情况下,也能做到轻松适配各个系统。

public class LinuxConfig{ ......... } public class MacConfig{ ........ } public class WindowsConfig{ ........ } public class Config<T> { private String configName; private String configNumber; private T osConfig; public Config(String configName , String configNumber , T osConfig){ } } //测试调用 public class GenericTypeTest { public static void main(String[] args) { Config<LinuxConfig> configConfig = new Config<>("linuxConfig","linux-x333",new LinuxConfig()); Config<WindowsConfig> configConfig1 = new Config<>("windowsConfig","win-x555",new WindowsConfig()); } }

仔细看下上面这段代码可以发现,我们把基类删除了,同时可以看到Config这个类的改变,我们加了<T> 这个写法,这个就是泛型的写法,在测试调用中也可以看到,调用特定的类,我们会把特定的对象传进去:如:<LinuxConfig>,<WindowsConfig>,这个就是泛型的使用场景,当一组对象可以复用同一个类或者方法的时候,可以采用泛型减少代码的编写,同时达到复用的效果,但其实这也是java提供的一种语法糖的效果,所谓的语法糖也仅仅是编译器给开发着提供的一种便利,让开发者的代码复用性更高,更加易于扩展。

以上主要介绍了泛型的用法和场景,很多语言中都会有这种写法,目的都是一样的,为了增加应用程序代码的复用性,我这里用java语法来做了举例。后面也继续介绍一些其他语言中泛型的用法,以及它的高级用法。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/123759.html

(0)
上一篇 2024-11-21 11:45
下一篇 2024-11-21 12:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信