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

在基类中直接获取到其泛型参数的Class

 
阅读更多
今天看到一个方法,在基类中直接获取到其泛型参数的Class,如下例:
MyDao extends BaseDao<Book> {...}

通过如下方法,可以在BaseDao中通过反射的方法,得到Book.class:
Class<T> entityClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];

原文见:http://xuliangyong.iteye.com/blog/51083
分享到:
评论

相关推荐

    泛型工具类

    `GenericUtil`类中定义的`getClassOfGenricTypeParam`方法是其关键所在,该方法有两个重载版本,分别用于获取泛型参数的具体类型。第一个版本仅接受一个类对象作为参数,第二个版本额外接受一个整型索引,用于指定要...

    反射处理java泛型_.docx

    获取泛型参数通常在子类继承泛型父类时有需求。例如,有一个泛型基类`Foo&lt;T&gt;`,其子类`FooChild`传入了一个具体的泛型参数`Bar`,要获取这个参数类型,通常有两种常见做法: a. 在基类中定义一个构造函数,传入...

    基对象引用子类实例(C# 形象说明:父母可以代表孩子做很多事情)

    2. **集合操作**:在泛型集合如`List&lt;BaseClass&gt;`中,可以存储任何子类的对象,因为它们都是`BaseClass`的实例。 3. **接口实现**:如果子类实现了某个接口,而该接口被基类引用,那么子类实例也可以被视为接口类型...

    SSH泛型代码实例

    - **Bean容器**:Spring的ApplicationContext接口提供了泛型版本的getBean方法,如`ApplicationContext.getBean(Class&lt;T&gt; requiredType)`,这样可以确保在获取Bean时的类型安全。 - **AOP代理**:Spring支持基于...

    公共适配器基类

    1. **泛型参数**:CommonAdapter使用泛型定义,表示适配的数据类型。例如,`public class CommonAdapter&lt;T&gt; extends RecyclerView.Adapter&lt;ViewHolder&gt;`,这里的T代表任意数据类型,使得适配器可以适应各种类型的...

    c#使用 和 继承 泛型类

    当基类是泛型时,子类也可以继承这些泛型参数。在继承泛型类时,子类可以选择约束类型参数,或者提供具体的类型。以下是一个示例: ```csharp public class DerivedGenericClass&lt;T&gt; : MyGenericClass { public ...

    Java1.5泛型指南中文版.doc

    这意味着泛型信息不会出现在运行时,因此在运行时无法获取泛型类型的信息。 ##### 6.3. 在老代码中使用泛型代码 在使用泛型类时,如果类的对象是由非泛型代码创建的,则需要使用通配符。 ```java List list = new ...

    C# 中的 泛型 集合

    在C#编程语言中,泛型集合是一种强大的工具,它允许开发者创建类型安全的数据结构,提高了代码的可读性、效率和复用性。本文将深入探讨C#中泛型集合的概念、优势以及如何使用它们。 一、泛型概述 泛型是C# 2.0引入...

    java 基于泛型与反射的通用 DAO

    泛型是Java 5引入的新特性,它允许在类、接口和方法中使用类型参数,从而提高了代码的类型安全性和可读性。在`BaseDao.java`中,可能会定义一个泛型基类,如: ```java public abstract class BaseDao&lt;T&gt; { public...

    C#重要知识之——泛型列表List例子

    1. 泛型约束:`List&lt;T&gt;`支持泛型约束,如`where T : class`限制`T`为引用类型,`where T : struct`限制为值类型,还可以定义接口约束、基类约束等。 2. 扩容机制:当列表容量不足时,`List&lt;T&gt;`会自动扩容。默认情况...

    C#泛型总结

    在泛型代码中,可以使用`default`关键字来获取类型的默认值。例如,对于值类型来说,默认值通常是0或`null`。 ```csharp public class MyClass { public T GetDefault() { return default(T); } } ``` #### 十...

    c#泛型基础讲解

    例如,如果需要在泛型类中使用某个类型的方法 `MyMethod()`,我们可以约束类型参数必须继承自特定的基类或实现特定的接口。 ```csharp public class MyClass&lt;T&gt; where T : IMyInterface { public void DoSomething...

    java中泛型上下界问题基本问题的介绍

    然而,在实际应用泛型的过程中,经常会遇到一些与类型兼容性相关的问题,例如当涉及到子类与父类的关系时。本文将详细介绍如何通过使用通配符的上界和下界来解决这些问题。 #### 1. 为什么需要通配符和边界? 假设...

    数据工厂泛型类源码

    3. **类型约束**:如果需要对`T`进行特定的限制,比如它必须继承自某个基类或实现某个接口,我们可以在泛型声明中添加类型约束,如`class FreeFlyDataFactory&lt;T extends IData&gt;`。 4. **使用工厂**:在客户端代码中...

    20060208pm--跟我一起学Visual Studio 2005(2)

    此外,编译器还允许显式强制转换泛型参数到其他接口,但不能转换到非约束的类。 ```csharp interface ISomeInterface { } class SomeClass { } class MyClass { public void SomeMethod(T t) { ISomeInterface ...

    java增删改查JDBC封装类(泛型封装)

    - 泛型是在编译时提供类型安全检查的一种机制,允许在类、接口和方法中使用类型参数,避免了强制类型转换的麻烦,提高了代码的可读性和安全性。 - 泛型类可以定义一个通用的数据类型T,实例化时可以指定具体的类型...

    学习Java中Class类及其用法

    - **对象的getClass()**:任何对象都可以通过`getClass()`方法获取其对应的Class对象,这是最直接的方式。 - **类字面常量**:使用`ClassName.class`直接获取Class对象,这种方式不会导致类的初始化。 3. **使用...

    spring hibernate 泛型DAO

    在这个例子中,`findByCriteria`方法接受一个Criteria对象作为参数,而`findByExample`方法使用了Example对象来构造查询,根据实体类对象的属性匹配数据库中的记录。 总结起来,"Spring Hibernate 泛型DAO"的主题...

    [Java学习笔记doc]之反射机制

    - 泛型在编译后会擦除,反射获取的`Class`对象并不包含泛型信息,但可以通过类型参数获取实际类型。 8. 性能考虑: - 反射虽然强大,但其性能通常低于直接的静态调用。因此,对于性能敏感的代码,应谨慎使用反射...

Global site tag (gtag.js) - Google Analytics