栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将类型参数作为类型参数的类传递给Java中的泛型方法

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

将类型参数作为类型参数的类传递给Java中的泛型方法

实际上,在Java中使用一些“技巧”是可能的。不要屈服于C#狂热分子的压力!(j / k)

“技巧”是创建一个扩展通用类型的类,并

Type
通过
.getGenericSuperclass()
或返回的值访问父类的类型参数的值
.getGenericInterfaces()

这很麻烦。为了简化我们的生活,Google已经为我们编写了大部分无聊的代码,并通过Guava提供了该代码。

检查

TypeToken
课程,它确实满足您的要求。例如:

TypeToken<List<String>> stringListTok = new TypeToken<List<String>>() {};

然后,您绕过a

TypeToken<T>
而不是a就
Class<T>
这样。它为您提供了对T表示的类型进行反射的方法。

它在内部所做的只是调用

.getClass().getGenericSuperclass()
(或
...Interfaces()
),然后从
Type
进行一些丑陋的转换,
ParameterizedType
并从那里检索所有信息(
.getActualTypeArguments()
,等等)。

最后,如果您想对Dependency Injection做一些类似的事情(即,假设您需要

Class<T>
在类的构造函数中注入a
,或者想获取某个参数化接口的实例,则该实例中的实例应取决于类型参数) ),Google
Guice(来自Google的DI容器)具有一种非常相似的机制来解决该问题,称为
TypeLiteral
。幕后的用法和代码与
TypeToken
Guava
几乎相同。在这里检查:
TypeLiteral





转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/435170.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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