扫码阅读
手机扫码阅读

泛型类的正确用法

166 2024-04-17

在准备Java基础知识的直播时,作者回顾了泛型在多线程任务基类中的应用,并提出了一个解决问题的思路。作者之前在这个基类中定义了一个泛型对象T,但是使用过程中并未发现其优势,反而出现了一些多线程锁的问题。

具体的问题在于,泛型对象T以前主要用于存储执行任务生成的标记,但这并没有带来预期的灵活性。作者的灵感来自于对不同多线程任务类中添加新属性的需求,如RequestThreadTime或UpdateSqlThread等,这些属性可以通过泛型T来代替。

作者决定将这个思路应用于现有的性能测试框架,修改所有的abstract类和实现类,以便更好地利用泛型。作为示例,作者分享了RequestThreadTimes类的代码,并指出对泛型的掌握对于框架改进起到了关键作用。

在RequestThreadTimes的实现中,作者尝试了多种继承和泛型声明方式,并最终确定了一种有效的写法。在这种写法中,父类中的泛型T被声明为HttpRequestBase类,这允许在子类中进行正常操作,但子类的泛型声明受到一定的限制。

文章还提到了类型转换的修改,特别是在标记方法中需要识别和处理不同类型的泛型对象。作者强调了对泛型深入理解的重要性,并通过实际的代码改进来展示了这一点。

本文首发于公众号「FunTester」,作者是知乎八级强者,文章也得到了腾讯云、开源中国和掘金社区的推荐。作者欢迎关注和交流,并声明禁止第三方擅自转载。

想要了解更多,点击 查看原文