泛型类的正确用法
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
在准备Java基础知识的直播时,作者回顾了泛型在多线程任务基类中的应用,并提出了一个解决问题的思路。作者之前在这个基类中定义了一个泛型对象T,但是使用过程中并未发现其优势,反而出现了一些多线程锁的问题。
具体的问题在于,泛型对象T以前主要用于存储执行任务生成的标记,但这并没有带来预期的灵活性。作者的灵感来自于对不同多线程任务类中添加新属性的需求,如RequestThreadTime或UpdateSqlThread等,这些属性可以通过泛型T来代替。
作者决定将这个思路应用于现有的性能测试框架,修改所有的abstract类和实现类,以便更好地利用泛型。作为示例,作者分享了RequestThreadTimes类的代码,并指出对泛型的掌握对于框架改进起到了关键作用。
在RequestThreadTimes的实现中,作者尝试了多种继承和泛型声明方式,并最终确定了一种有效的写法。在这种写法中,父类中的泛型T被声明为HttpRequestBase类,这允许在子类中进行正常操作,但子类的泛型声明受到一定的限制。
文章还提到了类型转换的修改,特别是在标记方法中需要识别和处理不同类型的泛型对象。作者强调了对泛型深入理解的重要性,并通过实际的代码改进来展示了这一点。
本文首发于公众号「FunTester」,作者是知乎八级强者,文章也得到了腾讯云、开源中国和掘金社区的推荐。作者欢迎关注和交流,并声明禁止第三方擅自转载。
想要了解更多内容?