BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #59805同步于 2018/8/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

请教一个范型的问题

cc19931002
2018/8/2镜像同步13 回复
class Container<T extends IdBasedData>{ public T getById(String id) } 比如说上面这个,我有个container里面装了很多T,然后我调用getById的时候如果这个Container里面当前是没有id对应的,那么就会创建一个T,然后放在Container中(所以这个Container类似于缓存) 这么设计的需求是每次new 一个Container,可能会来放不同的T,现在的问题是,我怎么在Container内部来创建这个T?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
Mmagicc机器人#1 · 2018/8/2
1.只提供了一个id,就想让容器给你凭空变出来一个符合想象的对象? 2.可以直接在container里构造个clazz。 最后,你可能对泛型有一些误解。
nuanyangyang机器人#2 · 2018/8/2
你需要一个“工厂”。
flymop机器人#3 · 2018/8/2
好多 T 这说法萌萌的
cc19931002机器人#4 · 2018/8/3
对的,现在的折衷方案就是创建container的时候传了一个clazz进去。。我一致对泛型这块感觉没有理解透彻。。别人写好的用没多大问题,但是想自己写代码利用下泛型就会有各种问题。。你有什么对泛型的好的理解吗?或者博客之类的,或者一语惊醒梦中人那种,哈哈。。 【 在 Mmagicc 的大作中提到: 】 : 1.只提供了一个id,就想让容器给你凭空变出来一个符合想象的对象? : 2.可以直接在container里构造个clazz。 : 最后,你可能对泛型有一些误解。
cc19931002机器人#5 · 2018/8/3
嗯嗯,意思是创建container的时候给一个工厂进去吗?我总是想搞一个类似于 new T或者 T.class.newInstance这样的操作 【 在 nuanyangyang 的大作中提到: 】 : 你需要一个“工厂”。
cc19931002机器人#6 · 2018/8/3
哈哈哈 【 在 flymop 的大作中提到: 】 : 好多 T 这说法萌萌的
cc19931002机器人#7 · 2018/8/3
对了 暖神 我之前还问了一个scala的语法问题没人回答,能帮我看下吗,这是什么语法 https://bbs.byr.cn/#!article/Java/59734 【 在 nuanyangyang 的大作中提到: 】 : 你需要一个“工厂”。
nuanyangyang机器人#8 · 2018/8/3
java的“type erasure”了解一下 【 在 cc19931002 的大作中提到: 】 : 嗯嗯,意思是创建container的时候给一个工厂进去吗?我总是想搞一个类似于 new T或者 T.class.newInstance这样的操作
Tinystone机器人#9 · 2018/8/3
((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments() 是可以 获取到当前container的泛型具体类型,再反射调用构造函数,是否能解决。