java 如何使用泛型 的类_如何在Java中使用泛型类型获取类

Map instance = new TreeMap();

@SuppressWarnings("unchecked")

Map map =

createMap((Class extends Map>)instance.getClass());

map.put("x", 1);

System.out.println("THIS IS x: " + map.get("x"));

这将适当地打印出来1.最有可能实施该方法

try

{

return clazz.newInstance();

}

catch (Exception e)

{

throw new RuntimeException(e);

}

更好地实现他们的API将是他们要求您输入类型T,并让他们回馈他们选择的地图,而不是要求您提供所有细节.否则,只要他们没有用任何数据填充Map,你可以自己实例化一个带有泛型类型参数的Map,如下所示:

public static Map getMap()

{

return new TreeMap();

}

然后您可以在没有警告的情况下访问它:

// note the lack of type arguments, which are inferred

Map instance = getMap();

// alternatively, you could do it more explicitly:

// Map instance = ClassName.getMap();

他们真的没有理由要求你提供地图的类型,除了给你一个完全匹配的实现(例如,如果你坚持使用HashMap,那么你将得到一个HashMap,如果你坚持一个TreeMap,然后你会得到一个TreeMap).但是,我怀疑TreeMap将丢失它所构造的任何Comparator,并且由于这是TreeMap的不可变(最终)字段,那么你无法修复它;这意味着在这种情况下地图不一样,也不可能是你想要的.

如果他们用数据填充Map,那么它就更没意义了.你总是可以传入Map的一个实例来填充,或让它们返回一个你可以简单包装的Map(例如,新的TreeMap< String,Integer>(instance);),他们应该知道哪个Map提供最多的实用程序对数据.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值