`
Aubergine_kang
  • 浏览: 259943 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

this.clazz = (Class<T>) ((ParameterizedType) getClass()(原创)

    博客分类:
  • java
 
阅读更多

getClass().getGenericSuperclass()返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的直接超类的 Type

然后将其转换ParameterizedType。。

getActualTypeArguments()返回表示此类型实际类型参数的 Type 对象的数组。
[0]就是这个数组中第一个了。。

简而言之就是获得超类的泛型参数的实际类型。。

比如
超类
public abstract class AbstractDao<T> {

 protected Session session;

 private Class<T> clazz;

 public AbstractDao(Session session) {
  this.session = session;
  this.clazz = (Class<T>) ((ParameterizedType) getClass()
    .getGenericSuperclass()).getActualTypeArguments()[0];
 }

 public void save(T obj) {
  session.saveOrUpdate(obj);
 }
      ******
子类
public class SimDAO extends AbstractDao<Sim> {
 public Session session;

 public SimDAO(Session session) {
  super(session);
 }
}
测试类
public class OracleTest {
public static void main(String[] args) throws Exception {
SimDAO dao= new SimDAO ();
dao.save(new Sim("simName"));
}
}
这样在你new OptionManager();以后
超类里的entityClass就是子类那里的public class OptionManager extends GenericDAO<MSGC_OPTION> 里面的MSGC_OPTION所对应的class对象了..

 

分享到:
评论

相关推荐

    报表导出工具类

    BookUtils.getInstance(boolean isTitle, boolean isSubTitle, int start, int end, int rowStart).initBook().bookOutport(Class&lt;T&gt; clazz, List&lt;T&gt; beans).write(String filerPath); Class&lt;T&gt; clazz:该类需要对...

    dorado5高级用法,原理,特性完整教程

    &lt;Dataset type="Form" id="datasetForm"&gt; &lt;MasterLink/&gt; &lt;Fields&gt; &lt;Field name="EMPLOYEE_ID" label="员工编号" dataType=""&gt; &lt;Properties/&gt; &lt;/Field&gt; &lt;Field name="DEPT_ID" label="部门" dataType=""&gt; ...

    excel导入导出工具

    export excel: 1-step:use @ExcelField(lableName="sex") on POJO's field 2-setp: use ExcelUtil's static method export(Class&lt;?&gt; clazz,List&lt;?...&gt; clazz,Map&lt;String,ExcelConvert&gt; convert,InputStream in)

    webservice、fusioncharts、xml解析

    public static&lt;T&gt; List&lt;T&gt; parseXml(String xmlStr,String startStr,String endStr,Class clazz){ List&lt;T&gt; reList = new ArrayList&lt;T&gt;(); if(xmlStr==null||"".equals(xmlStr)){ reList = null; }else{ ...

    java动态代理+自定义注解,实现改变目标方法行为(不入侵方法本身)

    java动态代理+自定义注解,实现改变目标方法行为(不入侵方法本身),支持...}需要手动配置下依赖: &lt;dependency&gt; &lt;groupId&gt;cglib&lt;/groupId&gt; &lt;artifactId&gt;cglib&lt;/artifactId&gt; &lt;version&gt;2.2.2&lt;/version&gt; &lt;/dependency&gt;

    java反射例子

    &gt;[] inters=clazz.getInterfaces(); for (int i = 0; i &lt; inters.length; i++) { System.out.println("实现的接口 :"+inters[i].getName()); } Class&lt;?&gt; sup=clazz.getSuperclass(); System.out....

    springmvc-jdbcTemplate

    List&lt;Map&lt;String, Object&gt;&gt; list = join(condition, orders, classLink); if(list == null) { return null; } List&lt;R&gt; ret = new ArrayList&lt;R&gt;(); for (int i = 0; i &lt; list.size(); i++) { ret.add...

    java反射对实体类取值和赋值

     Class&lt;T&gt; clazz = (Class&lt;T&gt;) model.getClass();  //获取所有的bean中所有的成员变量  Field[] fields = clazz.getDeclaredFields();  for(int j=0;j&lt;fields.length;j++){  //获取所有的bean中变量...

    Spring原理模拟代码

    Document doc = sb.build(this.getClass().getClassLoader() .getResourceAsStream("beans.xml")); Element root = doc.getRootElement();// 获取根元素 List&lt;?&gt; list = root.getChildren("bean");// 获取...

    java工厂系列设计模式源码与文档

    Document document = sb.build(this.getClass().getClassLoader().getResourceAsStream(fileName)); Element root = document.getRootElement(); List list = XPath.selectNodes(root, "/beans/bean"); for...

    数据库工具类DatabaseUtil.java

    java.lang.reflect.Method method = clazz.getMethod("close", null); method.invoke(resource, null); } catch (Exception e) { // e.printStackTrace(); } } /** * 执行 SELECT 等 SQL 语句并返回结果集. ...

    guice-jcl:使用 JCL 和 Guice 注入的示例项目

    将 Guice 与 JCL 结合使用的示例 这是一个示例项目,用于演示如何通过 (JarClassLoader...Class&lt; SomeInterface&gt; clazz = ( Class&lt; SomeInterface&gt; )jcl . loadClass( " SomeImpl " ); Injector injector = Guice . cre

    HTTP网络请求框架

    HttpRequest.reqquest(int,String,Parse&lt;T&gt;,Class&lt;T&gt;){....}; &gt;原生string文本请求: HttpRequest.getString(String,AqsString){...} &gt;单张图片请求: HttpRequest.setImage(ImageView,String,int,int){...} &gt;多...

    Can't find a codec for class java.math.BigDecimal.txt

    解决mongo数据插入时 报错问题 mogodb插入数据时报错Can't find a codec for class java.math.BigDecimal

    android json解析

    public Class&lt;T&gt; getDataClass() { return this.clazz; } /**成功*/ public abstract void onSuccess(T data); /**失败*/ public abstract void onFailure(int errorCode, String errorString);

    basedao的封装

    //获得当前类型的带有泛型类型的父类... ParameterizedType ptClass = (ParameterizedType) this.getClass().getGenericSuperclass(); //获得运行期的泛型类型 clazz = (Class) ptClass.getActualTypeArguments()[0];

    EnoFJS:增强javascript

    为了使这成为可能,EnoFJS 实现了一个 ClassFactory,处理范围和继承的所有麻烦。 var Dog = clazz(function Dog(name){ this.extend = 'Animal'; this.private = { name: null }; this.protected = { ...

    AHibernate1.1

    本版主要修改的内容: 1.修改bug,实体类的属性定义为...public BaseDaoImpl(SQLiteOpenHelper dbHelper, Class&lt;T&gt; clazz) 注:使用混淆时最好在proguard.cfg文件添加设置:-keepattributes *Annotation* 6.其他一些bug.

    传智博客jdbc学习案例

    userDao = (UserDao) clazz.newInstance(); } catch (Throwable e) { throw new ExceptionInInitializerError(e); } } public static DaoFactory getInstance() { return instance; } public ...

    day021-反射和注解笔记和代码.rar

    Constructor constructor = clazz.getConstructor(Class 参数字节码)根据参数类型获取public修饰的指定的的构造方法 Constructor constructor = clazz.getDeclearConstructor(Class 参数字节码) 获取任意...

Global site tag (gtag.js) - Google Analytics