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

spring中的工具类——GenericTypeResolver使用

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

spring中的工具类——GenericTypeResolver使用

概念

GenericTypeResolver是spring提供的泛型解析工具类,用于解析当前类所使用的泛型Class,用于适配某些特定场景需求以及设计模式中。

例如:
1、定义接口

public interface  MyInterface {
    void testMethod(T event);
}

2、定义实现类

public class MyImpl  implements MyInterface{

    @Override
    public void testMethod(String event) {

    }
}

3、测试

 public static void main(String[] args) {
        MyImpl dffImpl = new MyImpl();
        Class aClass = GenericTypeResolver.resolveTypeArgument(dffImpl.getClass(), MyInterface.class);
        System.out.println(aClass);
}

结果:

class java.lang.String
解决多级继承,多接口实现的问题,支持获取多个泛型参数类型

例如:
 

class IClassProviderTest {
    interface Provider {
        default Class provideClass() {
            return (Class) GenericTypeResolver.resolveTypeArgument(getClass(), Provider.class);
        }
    }

    interface I0 extends Provider {
    }

    interface I1 extends I0 {
    }

    interface I2 extends I1 {
    }

    class C0 implements Provider {

    }

    class C1 extends C0 {

    }

    class C2 extends C1 {

    }

    class Entity {

    }

    public static void main(String[] args) {
        IClassProviderTest test = new IClassProviderTest();
        test.provideClass();
    }

    void provideClass() {
        {
            class C implements I0 {
            }
            System.out.println(new C().provideClass());
        }
        {
            class C implements I1 {
            }
            System.out.println(new C().provideClass());
        }
        {
            class C implements I2 {
            }
            System.out.println(new C().provideClass());
        }
        {
            class C extends C0 {
            }
            System.out.println(new C().provideClass());
        }
        {
            class C extends C1 {
            }
            System.out.println(new C().provideClass());
        }
        {
            class C extends C2 {
            }
            System.out.println(new C().provideClass());
        }
    }
}

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1016365.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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