`

基于反射_判断子类泛型类型

    博客分类:
  • j2se
 
阅读更多

父类代码:

 

package cn.generic;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

public class Base<T,PK> {
	
	protected Class<T> entityClass;
	
	protected Class<PK> pkClass;

	public Base() {
		Type genType = getClass().getGenericSuperclass();
		Type[] params = ((ParameterizedType)genType).getActualTypeArguments();
		
		this.entityClass = (Class)params[0];
		this.pkClass = (Class)params[1];
	}
}

 子类及测试泛型代码:

 

package cn.generic;

public class Impl extends Base<String, Long> {
	
	public static void main(String[] args) {
		Impl impl = new Impl();
		System.out.println(impl.entityClass); // class java.lang.String
		System.out.println(impl.pkClass); // class java.lang.Long
	}
}
 
分享到:
评论

相关推荐

    C#编程规则与技巧

    C#泛型还携带丰富的元数据,这使得泛型类型可以应用于强大的反射技术。此外,C#通过“基类、接口、构造器、值类型/引用类型”的约束方式来实现对类型参数的显示约束,提高了类型安全,但也牺牲了C++模板基于“签名”...

    java判断题java判断题.docx

    18. **方法重载**:方法重载基于方法名相同但参数列表不同,返回值类型不作为判断依据。 19. **内存管理**:Java通过垃圾回收机制自动回收不再使用的对象,但不会立即释放。 20. **封装**:封装是面向对象编程的...

    isAssignableFrom

    总之,`isAssignableFrom`是Java编程中一个实用的工具,它帮助我们验证类型之间的继承或实现关系,从而在多态、泛型和反射等场景中确保代码的正确性和灵活性。在日常开发中,掌握这个方法的使用能有效提高代码质量...

    java笔记.docx

    泛型还可以配合instanceof运算符检查对象是否符合特定的泛型类型。 多态性是面向对象的核心特性之一,允许不同的子类对象对同一消息做出不同的响应。通过继承、接口和抽象类,我们可以实现多态性,定义通用的行为...

    java基础教程_java教程_java_

    泛型引入后,增强了类型安全,允许在编译时检查类型,并且减少了强制类型转换的需要。 10. **反射** 反射API允许程序在运行时检查类、接口、字段和方法的信息,并动态调用方法和访问字段。 11. **JNI(Java ...

    SimpleJava.pdf

    - **泛型限制**:通过通配符、extends和super等关键字限制泛型类型。 #### 39. 为什么Java需要泛型类型? - **类型安全**:在编译期就能发现类型错误,提高程序健壮性。 - **代码复用**:通过泛型实现通用的数据...

    文件整理基础部分C#代码

    4. **泛型**:泛型允许我们在类、接口和方法中创建可重用的类型参数,提高代码的灵活性和类型安全性。 5. **反射**:反射允许程序在运行时检查自身的信息,如类型、成员、属性等,并能动态创建对象和调用方法。 6....

    JAVA面试题总览[整理].pdf

    26. 泛型的引入主要是为了类型安全,避免强制类型转换,提高代码可读性,编译时就能发现类型错误。 27. a.hashCode()用于获取对象的哈希值,与equals()相关联,相同对象的哈希值应相同,不同对象的哈希值尽量不同。...

    Java基础学习源代码

    14. **泛型**:泛型提供类型安全,允许在编译时检查类型,减少运行时错误。 15. **枚举**:枚举是预定义的一组常量,提供了比字符串更安全的常量表示方式。 这个"Java基础学习源代码"压缩包很可能是为了帮助初学者...

    jdk1.7_api chm

    7. **开关语句**:允许使用字符串作为switch语句的case标签,简化了基于字符串的条件判断。 8. **异常处理**:允许父类检查异常的子类覆盖方法声明不抛出任何异常,这被称为"受检异常的擦除"。 9. **改进的集合**...

    JAVA小代码-源码天空

    - **通配符**:如,用于限制泛型类型的范围。 10. **注解(Annotation)** - **元数据**:提供编译时和运行时的附加信息,如@Override、@Deprecated等预定义注解。 以上只是部分可能涵盖的知识点,具体"源码天空...

    2022面试题3java背诵版本.doc

    11. **泛型**:泛型增强了代码的类型安全,防止在集合中存储不兼容的数据类型。例如`List&lt;String&gt;`只允许存储字符串。 12. **String的特性**:String在Java中是不可变的,这意味着一旦创建就不能改变。这是为了线程...

    C#语言参考

    9. **元数据与反射**:C#通过元数据(metadata)存储类型信息,反射机制可动态获取和操作这些信息,如在运行时创建对象、调用方法等。 10. **异构集合与集合初始化器**:C#支持泛型集合和集合初始化器,简化了代码...

    c#简单的理论知识.

    - 泛型允许创建参数化类型,提高类型安全性和效率。 7. **异常处理**: - 异常是程序运行时发生的错误,用`try-catch`结构捕获和处理。 - `throw`关键字用于抛出异常。 - 自定义异常类继承自`System.Exception`...

    Java 基础核心总结-副本

    泛型是Java 5引入的特性,增强了类型安全,减少类型转换的麻烦。枚举(enum)用于定义一组固定的常量,提供了比常量更丰富的功能。 以上是对"Java基础核心总结_副本"可能涵盖的内容的概述,实际文档可能还涉及其他...

    Java面试八股文10万字总结.docx

    14. **泛型**:泛型提供了类型安全,允许在编译时检查类型。 15. **创建对象方式**:new关键字、反射、克隆、工厂方法等。 16. **final的用法**:声明常量、限制变量修改、声明不可变对象、限制方法覆盖和类继承。...

    C#指南dotnet-csharp.pdf

    - **模式匹配**: 通过 `switch` 表达式等特性,可以基于类型和值进行条件判断。 - **LINQ**: LINQ(Language Integrated Query)使开发者能够以更简洁的方式查询和操作集合。 - **异常处理**: 通过 `try-catch` 语句...

    C#知识类库

    9. **元数据与反射**:C#支持元数据,即附加到类型和成员上的信息,可以用来在运行时获取类型信息。反射则允许程序在运行时动态地创建对象、调用方法和访问属性。 10. **异构编程与互操作性**:通过.NET框架的COM互...

    Java入门学习笔记

    - `instanceof`用于判断一个对象是否是某个类或其子类的实例。 **7.4 静态变量,方法和类** - **静态变量**:属于类而不是对象,所有对象共享一份静态变量。 - **静态方法**:可以直接通过类名调用,不需要创建...

Global site tag (gtag.js) - Google Analytics