为了账号安全,请及时绑定邮箱和手机立即绑定

如何在java中定义通用类型列表?

如何在java中定义通用类型列表?

浮云间 2021-08-04 10:13:52
我已经实现了一个具有以下签名的 java 方法:public <T> T getItemValue(String itemName, Class<T> itemType)  {...}这允许客户端以以下方式调用该方法以获取例如 String 或 Integer 类型的值:String s = itemCol.getItemValue("_name", String.class);int i = itemCol.getItemValue("_count", Integer.class);新的 microprofile Config 1.3 API的Config 接口也使用了这种方法签名。我的问题是如何 - 或者是否 - 我可以使用类型列表的类型调用该方法,List<String>例如获取字符串对象列表。我无法制定客户电话。我试过这样的事情:List<String> list = itemCol.getItemValue("_count", List<String.class>);但这似乎不是正确的语法。编辑:由于下面的回复,我决定添加一个单独的方法来获取特定类型的列表。public <T> List<T> getItemValueList(String itemName, Class<T> itemType) {        ...}通过这个额外的方法签名,客户端可以决定天气来获取单个值或特定类型的列表。
查看完整描述

2 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

类型参数被擦除,它们在运行时不存在。没有List<String>运行时这样的东西,只有List.

所以,表达反射代理的正确方法List<String>是……你不能。您只能为 表达反射代理List,就像对任何其他类所做的一样:List.class.


查看完整回答
反对 回复 2021-08-04
?
动漫人物

TA贡献1815条经验 获得超10个赞

List<String.class>,不。您需要使用TypeToken来获取此类通用信息。您还需要更改您的代码以使用Type而不是Class.


查看完整回答
反对 回复 2021-08-04
  • 2 回答
  • 0 关注
  • 196 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信