该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2012-02-01
icezx 写道 peak 写道 反正是娶不到,只能取到父类的泛型 可以取得到,但是需要改造一下,详见 江南白衣那个文章 绝对取得到... 我自己用别人的代码取过,一时翻不出来你们看.好像是vcok那个代码 |
|
返回顶楼 | |
发表时间:2012-02-01
yoyo837 写道 icezx 写道 peak 写道 反正是娶不到,只能取到父类的泛型
可以取得到,但是需要改造一下,详见 江南白衣那个文章 绝对取得到... 我自己用别人的代码取过,一时翻不出来你们看.好像是vcok那个代码 可以取到的,比较绕的一种办法。 具体可以参考fastjson中的TypeReference的用法和实现: http://code.alibabatech.com/wiki/display/FastJSON/TypeReference |
|
返回顶楼 | |
发表时间:2012-02-01
wenshao 写道 yoyo837 写道 icezx 写道 peak 写道 反正是娶不到,只能取到父类的泛型
可以取得到,但是需要改造一下,详见 江南白衣那个文章 绝对取得到... 我自己用别人的代码取过,一时翻不出来你们看.好像是vcok那个代码 可以取到的,比较绕的一种办法。 具体可以参考fastjson中的TypeReference的用法和实现: http://code.alibabatech.com/wiki/display/FastJSON/TypeReference 复杂类型用一个匿名类来记录它的泛型,这主意挺好,不过对lz来说,感觉上没有必要 幸运的是(或者其实是不幸?),lz要用到的callback一般情况下并非通用的,于是对于不同的callback,因为泛型参数已固定在某一具体类里,所以可以取了,不过这个保证不够实在啊 终究来说运行时是没有参数了,要取只能取到类的参数,取不到对象的参数 |
|
返回顶楼 | |
发表时间:2012-02-01
gtssgtss 写道 wenshao 写道 yoyo837 写道 icezx 写道 peak 写道 反正是娶不到,只能取到父类的泛型
可以取得到,但是需要改造一下,详见 江南白衣那个文章 绝对取得到... 我自己用别人的代码取过,一时翻不出来你们看.好像是vcok那个代码 可以取到的,比较绕的一种办法。 具体可以参考fastjson中的TypeReference的用法和实现: http://code.alibabatech.com/wiki/display/FastJSON/TypeReference 复杂类型用一个匿名类来记录它的泛型,这主意挺好,不过对lz来说,感觉上没有必要 幸运的是(或者其实是不幸?),lz要用到的callback一般情况下并非通用的,于是对于不同的callback,因为泛型参数已固定在某一具体类里,所以可以取了,不过这个保证不够实在啊 终究来说运行时是没有参数了,要取只能取到类的参数,取不到对象的参数 callback是一个接口。里面只有一个doInmybatis方法让子类去实现。 “callback一般情况下并非通用的”是啥意思 |
|
返回顶楼 | |
发表时间:2012-02-01
java的泛型实现的不彻底,和C#的没法比,到了运行时就歇菜了。
|
|
返回顶楼 | |
发表时间:2012-02-01
icezx 写道 gtssgtss 写道 wenshao 写道 yoyo837 写道 icezx 写道 peak 写道 反正是娶不到,只能取到父类的泛型
可以取得到,但是需要改造一下,详见 江南白衣那个文章 绝对取得到... 我自己用别人的代码取过,一时翻不出来你们看.好像是vcok那个代码 可以取到的,比较绕的一种办法。 具体可以参考fastjson中的TypeReference的用法和实现: http://code.alibabatech.com/wiki/display/FastJSON/TypeReference 复杂类型用一个匿名类来记录它的泛型,这主意挺好,不过对lz来说,感觉上没有必要 幸运的是(或者其实是不幸?),lz要用到的callback一般情况下并非通用的,于是对于不同的callback,因为泛型参数已固定在某一具体类里,所以可以取了,不过这个保证不够实在啊 终究来说运行时是没有参数了,要取只能取到类的参数,取不到对象的参数 callback是一个接口。里面只有一个doInmybatis方法让子类去实现。 “callback一般情况下并非通用的”是啥意思 List是一个接口,ArrayList是一个常用的具体类,ArrayList就是通用的,例如无论ArrayList<String>还是ArrayList<Integer>,都不需要新的类 callback的话,一般是一个SQL对应一个callback的实现类吧,如果是这样当然就不通用了,莫非lz弄出了一个可以处理任何sql的callback? |
|
返回顶楼 | |
发表时间:2012-02-01
gtssgtss 写道 icezx 写道 gtssgtss 写道 wenshao 写道 yoyo837 写道 icezx 写道 peak 写道 反正是娶不到,只能取到父类的泛型
可以取得到,但是需要改造一下,详见 江南白衣那个文章 绝对取得到... 我自己用别人的代码取过,一时翻不出来你们看.好像是vcok那个代码 可以取到的,比较绕的一种办法。 具体可以参考fastjson中的TypeReference的用法和实现: http://code.alibabatech.com/wiki/display/FastJSON/TypeReference 复杂类型用一个匿名类来记录它的泛型,这主意挺好,不过对lz来说,感觉上没有必要 幸运的是(或者其实是不幸?),lz要用到的callback一般情况下并非通用的,于是对于不同的callback,因为泛型参数已固定在某一具体类里,所以可以取了,不过这个保证不够实在啊 终究来说运行时是没有参数了,要取只能取到类的参数,取不到对象的参数 callback是一个接口。里面只有一个doInmybatis方法让子类去实现。 “callback一般情况下并非通用的”是啥意思 List是一个接口,ArrayList是一个常用的具体类,ArrayList就是通用的,例如无论ArrayList<String>还是ArrayList<Integer>,都不需要新的类 callback的话,一般是一个SQL对应一个callback的实现类吧,如果是这样当然就不通用了,莫非lz弄出了一个可以处理任何sql的callback? 这个是1..N个SQL对应一个callback,但是此处就用来查询,当然用于修改啊,删除也没问题,只不过方法名被我叫成exectuteQuery了。 callback来实现什么主要由我传入的T也就是最后将转换成Mybatis的mapper里的具体方法决定,使用的人只需要决定需要调用mapper里的何种方法 |
|
返回顶楼 | |
发表时间:2012-02-01
能取到啊 取父类的啊 详情请参照Hibernate https://community.jboss.org/wiki/GenericDataAccessObjects
|
|
返回顶楼 | |
发表时间:2012-02-01
callback.getClass(); 去获取T的类型, 前提, callback是你MybatisCallBack的一个子类实现,否者你就取到了Object
|
|
返回顶楼 | |
发表时间:2012-02-01
最后修改:2012-02-01
icezx 写道 public <T> Object executeQuery(MybatisCallBack<T> callback){
。。。。。。。。。。。。 } 这是小弟的代码。我想在方法内部取得方法签名里MybatisCallBack<T> callback 的类型T的类型和类型名,一直 找不到可以取的T的方法, 无奈之下多放了一个参数进来 public <T> Object executeQuery(MybatisCallBack<T> callback, Class<T> type){ 。。 } public class Xxxxx<T> { private Class<T> clazz; public Xxxxx() { Type genericType = this.getClass().getGenericSuperclass(); Type[] params = ((ParameterizedType) genericType).getActualTypeArguments(); clazz = (Class<T>)params[0]; } public <T> Object executeQuery(MybatisCallBack<T> callback){ Class<T> type = clazz; } } |
|
返回顶楼 | |