ParameterizedType,getClass(),getGenericSuperclass()

2024-06-22 05:38

本文主要是介绍ParameterizedType,getClass(),getGenericSuperclass(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

子类

public class CustomerDao extends JdbcDaoImpl<Customer>{}

直接父类

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;/*** 使用 QueryRunner 提供其具体的实现* @param <T>: 子类需传入的泛型类型. */
public class JdbcDaoImpl<T> implements DAO<T> {private QueryRunner queryRunner = null;private Class<T> type;public JdbcDaoImpl() {queryRunner = new QueryRunner();//getClass()是CustomerDao类type = ReflectionUtils.getSuperGenericType(getClass());}
@Override public List<T> getForList(Connection connection, String sql, Object... args) throws SQLException {return queryRunner.query(connection, sql, new BeanListHandler<>(type), args);}
}
超父类

public class ReflectionUtils {/*** 通过反射, 获得定义 Class 时声明的父类的泛型参数的类型* 如: public EmployeeDao extends BaseDao<Employee, String>* @param clazz* @param index* @return*/@SuppressWarnings("unchecked")public static Class getSuperClassGenricType(Class clazz, int index){//返回带泛型的父类例如:BaseDao<Employee, String>Type genType = clazz.getGenericSuperclass();//ParameterizedType代表带泛型的类
if(!(genType instanceof ParameterizedType)){return Object.class;}//获取类似Employee,String泛型的类型Type [] params = ((ParameterizedType)genType).getActualTypeArguments();if(index >= params.length || index < 0){return Object.class;}if(!(params[index] instanceof Class)){return Object.class;}return (Class) params[index];}
}


这篇关于ParameterizedType,getClass(),getGenericSuperclass()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1083441

相关文章

API学习java.lang.Object.getClass

package com.wonders.week01.object;/*** JDK1.7* getClass()* (1)java.lang.Object* (2)方法访问权限修饰符是public* (3)方法的返回值类型是Class* (4)该方法是由final修饰的,不可以改变,不能被继承* (5)Class这个对象代表的是对象运行时的类。* (6)返回的类对象是被代表类的静态同步方法锁定的

getclass.getGenericsupperclass

getClass().getGenericSuperclass()返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的直接超类的 Type然后将其转换ParameterizedType。。getActualTypeArguments()返回表示此类型实际类型参数的 Type 对象的数组。[0]就是这个数组中第一个了。。简而言之就是获得超类的泛型参数的实际类型。。比如超类

java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

今天在整合ssh框架时,用的全注解性,把Service和Dao都抽取了一个BaseService和BaseDao,在执行删除语句是出现了 java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType  或   Unknown entity: java.lang.Object,查网上资料和不断查看代码,后面发现是在Bas

getInterfaces(),getMethod(String name, Class... parameterTypes),getClass

返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指定公共成员方法。name 参数是一个String,用于指定所需方法的简称。parameterTypes 参数是按声明顺序标识该方法形式参数类型的 Class 对象的一个数组。如果 parameterTypes 为 null,则按空数组处理。  例:以项目Spring_Test为例 beans.xml <be

class和getClass()

为了解释这class和getClass()这两个概念,我们创建两个类A和B在同一个test包下,如下: package test;public class A {} package test;public class B {} 下面是我们需要了解的一些java概念 类 类是java的一种可以自定义的数据类型,和C++一样,C语言的结构体struct同样是可以自

java的getClass()函数

Java反射学习     所谓反射,可以理解为在运行时期获取对象类型信息的操作。传统的编程方法要求程序员在编译阶段决定使用的类型,但是在反射的帮助下,编程人员可以动态获取这些信息,从而编写更加具有可移植性的代码。严格地说,反射并非编程语言的特性,因为在任何一种语言都可以实现反射机制,但是如果编程语言本身支持反射,那么反射的实现就会方便很多。 1,获得类型类     我们知道在Java中一切都

在java中,getClass().getSimpleName();是什麽?

getClass()获得当前对象的类型...java中有Class类,用以描述类型信息.如用下面的语句Class theClass="hello".getClass();得到的就是字符串的类型. getSimpleName()返回源代码中给出的底层类的简称。 public class sample{ public static void main(String[] args){   /

java 反射机制 (获取父类泛型的类型)getGenericSuperclass

1.首先, T.getClass() 或 T.class都是非法的,因为T是泛型变量;      由于一个类的类型在编译期已确定,故不能在运行期得到T的实际类型; 2.获取方式是: [java]  view plain copy print ? Class <T> entityClass = (Class <T>) ((ParameterizedType) get

Class.getResource()、ClassLoader.getResource()和this.class.getClassLoader()及.getClass()和.class

.getClass()和.class的概念 反射,可以理解为在运行时期获取对象类型信息的操作。传统的编程方法要求程序员在编译阶段决定使用的类型,但是在反射的帮助下,编程人员可以动态获取这些信息,从而编写更加具有可移植性的代码。 1,获得类型类 在Java中一切都是对象,一般所使用的对象都直接或间接继承自Object类。Object类中包含一个方法名叫getClass,利用这个方法就可以获得一个实

SpringBoot测试jdbc时dataSource.getClass()出现空指针异常

当我们测试jdbc是否连接成功,出现空指针异常,这时不要慌张,首先检查是否引入依赖,依赖的格式是否正确。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>