首页 > 社交 > 科普中国

编程语言之泛型(一)

常驻编辑 科普中国 2022-06-13 写法   语法   这时候   场景   对象   需求   效果   语言   代码   系统

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

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

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系统配置的信息。下面将会随着需求的不断迭代,对这个类逐步地改进:B3h拜客生活常识网

需求迭代一:Config类需要同时适配Windows系统和Linux系统B3h拜客生活常识网

这时候很简单的可以想到只要再增加一个Windows配置的类就行:B3h拜客生活常识网

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中添加了关联,看上去完美解决上面的需求;但这时候需求再次迭代....B3h拜客生活常识网

需求迭代二:Config类除了适配Windows系统和Linux系统,还需要适配Mac系统B3h拜客生活常识网

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

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

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这个类中的代码了。B3h拜客生活常识网

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

public class LinuxConfig{
    .........
}
public class MacConfig{
    ........
}
public class WindowsConfig{
    ........
}
public class Config {
    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 configConfig =
                new Config<>("linuxConfig","linux-x333",new LinuxConfig());
        Config configConfig1 =
                new Config    

相关阅读:

  • 八大写怎么写(1~1田字格正确写法)
  • 陈怎么写好看(钱字的签名写法)
  • 高字怎么写好看(高字的各种写法图片)
  • 张字多少笔画(张几种写法)
  • 祥字有哪些(祥字的各种写法)
  • 开怎么写的(草书写法)
  • 草书的字怎么写(草书的写法)
  • 绿怎么写的 4字写法图片?
  • “父”字的八种写法
  • 明信同城交友上聊天片写的格式 明信片的格式 明信片的
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。