栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础系列:泛型

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础系列:泛型

1 简介
序号应用范围
1
2接口
3方法
2 Usage 2.1 泛型类
package com.monkey.java_study.datastructure.generic;


public class GenericClassTest {

    
    private T data;


    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    @Override
    public String toString() {
        return "GenericClassTest{" +
                "data=" + data +
                '}';
    }
}
2.2 泛型接口 2.2.1 接口
package com.monkey.java_study.datastructure.generic;


public interface IGenericInterfaceTest {

    
    T getData();
}
2.2.2 String类型实现
package com.monkey.java_study.datastructure.generic.impl;

import com.monkey.java_study.datastructure.generic.IGenericInterfaceTest;


public class GenericInterfaceTestStringImpl implements IGenericInterfaceTest {

    @Override
    public String getData() {
        return "Generic interface implements!";
    }
}
2.2.3 Integer类型实现
package com.monkey.java_study.datastructure.generic.impl;

import com.monkey.java_study.datastructure.generic.IGenericInterfaceTest;


public class GenericInterfaceTestIntegerImpl implements IGenericInterfaceTest {

    @Override
    public Integer getData() {
        return 1;
    }
}
2.3 泛型方法
package com.monkey.java_study.datastructure.generic;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;


public class GenericMethodTest {

    private static final Logger logger = LogManager.getLogger(GenericMethodTest.class);

    
    public  T genericMethod(GenericClassTest genericClassTest) {
        T data = genericClassTest.getData();
        return data;
    }

    
    public  T genericMethodDirect(T data) {
        return data;
    }

    
    public  T genericMethodWithTypeLimit(T data) {
        return data;
    }

    
    public  T genericMethodWithTypeLimit1(GenericClassTest genericClassTest) {
        T data = (T) genericClassTest.getData();
        return data;
    }

    
    public  void genericMethodWithoutReturn(GenericClassTest genericClassTest) {
        T data = genericClassTest.getData();
        logger.info(">>>>>>>>>泛型方法输出值:{}", data);
    }
}
3 小结
序号应用场景
1
2接口
3方法
4 完整测试样例
package com.monkey.java_study.functiontest;

import com.monkey.java_study.datastructure.generic.GenericClassTest;
import com.monkey.java_study.datastructure.generic.GenericMethodTest;
import com.monkey.java_study.datastructure.generic.impl.GenericInterfaceTestIntegerImpl;
import com.monkey.java_study.datastructure.generic.impl.GenericInterfaceTestStringImpl;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.Test;


public class GenericTest {

    private static final Logger logger = LogManager.getLogger(GenericTest.class);

    @Test
    public void genericClassStringTest() {
        GenericClassTest genericClass = new GenericClassTest<>();
        genericClass.setData("StringType");
        logger.info(">>>>>>>>>>String:{}", genericClass);
    }

    @Test
    public void genericClassIntegerTest() {
        GenericClassTest genericClass = new GenericClassTest<>();
        genericClass.setData(1);
        logger.info(">>>>>>>>>>Integer:{}", genericClass);
    }

    @Test
    public void genericMethod1() {
        GenericMethodTest genericMethodTest = new GenericMethodTest();
        GenericClassTest genericClassTest = new GenericClassTest<>();
        genericClassTest.setData("Generic class 1.");
        String data = genericMethodTest.genericMethod(genericClassTest);
        logger.info(">>>>>>>>>>data:{}", data);
    }

    @Test
    public void genericMethod2() {
        GenericMethodTest genericMethodTest = new GenericMethodTest();
        String data = "Generic class 2";
        String data1 = genericMethodTest.genericMethodDirect(data);
        logger.info(">>>>>>>>>data:{}", data1);
    }

    @Test
    public void genericMethod3() {
        GenericMethodTest genericMethodTest = new GenericMethodTest();
//        String data = "Generic method 1";
        Integer data = 1;
        Integer data1 = genericMethodTest.genericMethodWithTypeLimit(data);
        logger.info(">>>>>>>>>data:{}", data1);
    }

    @Test
    public void genericMethod4() {
        GenericMethodTest genericMethodTest = new GenericMethodTest();
        GenericClassTest genericClassTest = new GenericClassTest<>();
        genericClassTest.setData(0.01);
        Double data1 = genericMethodTest.genericMethodWithTypeLimit1(genericClassTest);
        logger.info(">>>>>>>>>data:{}", data1);
    }

    @Test
    public void genericMethod5() {
        GenericMethodTest genericMethodTest = new GenericMethodTest();
        GenericClassTest genericClassTest = new GenericClassTest<>();
        genericClassTest.setData("Generic class 3");
        genericMethodTest.genericMethodWithoutReturn(genericClassTest);
    }

    @Test
    public void genericInterface1() {
        GenericInterfaceTestStringImpl genericInterfaceTest = new GenericInterfaceTestStringImpl();
        String data = genericInterfaceTest.getData();
        logger.info(">>>>>>>>>>data:{}", data);
    }

    @Test
    public void genericInterface2() {
        GenericInterfaceTestIntegerImpl genericInterfaceTest = new GenericInterfaceTestIntegerImpl();
        Integer data = genericInterfaceTest.getData();
        logger.info(">>>>>>>>>>data:{}", data);
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/666755.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号