状况是这样
我要写一个自动化物件
我宣告了一个泛型方法 会传回泛型
static public <T> T sesPool(String col,T tp)
目标的资料有时会不存在
而我不要null 所以需要初始化T
然后 问题发生了
首先不能 new T()
"Cannot instantiate the type T"
接者
我改成<T extends Class>后
当我投入sesPool("", new HashMap<String, Integer>())
后
又跟我讲说 接口不属于CLASS
我需要投入各种资料 包括潜在的泛型资料(各种Map)
同时需要在资料不存在时 自动new 一个空物件
查过不少资料 但是无解
请问我该怎么处理?
谢谢
作者:
LaPass (LaPass)
2016-02-19 19:49:00java 无解
作者:
haha02 (来人!上夹棍!)
2016-02-19 21:26:00多吃一个Class<T>参数?
作者:
yyc1217 (somo)
2016-02-20 00:06:00试试看用.newInstance() 不过我觉得要用design pattern也就是你思考的解决方法换成某种design pattern来比较好
Class<T> T.newInstance() 测试过不行
作者:
ssccg (23)
2016-02-20 02:32:00要newInstance就要有Class参数,不知道类别怎么知道new什么类别的空物件?
我有带入T作为参考 但是HashMap<>被视为interface
作者:
ssccg (23)
2016-02-20 02:43:00泛型没有独立的class,只能带HashMap.class<T> T method(Class<? extends T> claz, T data)return data != null ? data : claz.newInstance();可以Map<String, Long> map = method(HashMap.class,null);但其实设计成带Supplier<T>,让caller自己决定default较好