java 泛型T的使用

。_饼干妹妹 提交于 2020-04-20 20:49:42

1.设计背景 ,有common ,web,mgr 三个模块,cmomon做共有模块,web 作为app 的组件,mgr作为后管,在common模块 发起调用接口调用,但是common 模块不能引入web模块的bean 。为了使用面向对象编程,可以把web组件的bean 作为一个属性,传入到common组件的Bean 中

代码如下:

1.泛型的抽象类

package com.qimh.springbootfiledemo.generic;

public abstract class GeneratorAbstractor<T> {

    protected T param;

    public T getParam() {
        return param;
    }

    public void setParam(T param) {
        this.param = param;
    }
}

2.实现类

package com.qimh.springbootfiledemo.generic;

public class PersonCreator extends GeneratorAbstractor<Person> {
}

3.web组件的bean

package com.qimh.springbootfiledemo.generic;

public class Person {
    private Integer age;
    private String name;
    private Integer sex;

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }
}

4.web 组件把 person 作为属性传入到Common组件的实现类中

package com.qimh.springbootfiledemo.generic;

import com.alibaba.fastjson.JSON;

public class MainTest {
    public static void main(String[] args){
        Person person = new Person();
        person.setAge(20);
        person.setName("张三");
        person.setSex(1);

        Person person2 = new Person();
        person2.setAge(30);
        person2.setName("李四");
        person2.setSex(1);

        PersonCreator personCreator = new PersonCreator();
        personCreator.setParam(person);
        Person tmp = personCreator.getParam();

        PersonCreator personCreator2 = new PersonCreator();
        personCreator2.setParam(person2);
        Person tmp2 = personCreator2.getParam();

        System.out.println(String.format("person:%s  --- person2:%s", JSON.toJSONString(tmp),JSON.toJSONString(tmp2)));

    }
}

5.运行结果

person:{"age":20,"name":"张三","sex":1}  --- person2:{"age":30,"name":"李四","sex":1}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!