Java中的getGenericSuperclass方法的基本用法

原创 2015年11月19日 15:15:27

通过getGenericSuperclass方法可以获取当前对象的直接超类的 Type

实例:

package cn.tzz.lang.clazz;

public class User {

	private Integer id;
	private String name;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
}

public class BaseHibernateDao<T,ID extends Serializable> {
	
	private Class<T> clazz;
	
	public BaseHibernateDao(){
		//当前对象的直接超类的 Type
		Type genericSuperclass = getClass().getGenericSuperclass();
		if(genericSuperclass instanceof ParameterizedType){
			//参数化类型
			ParameterizedType parameterizedType= (ParameterizedType) genericSuperclass;
			//返回表示此类型实际类型参数的 Type 对象的数组
			Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
			this.clazz= (Class<T>)actualTypeArguments[0];
		}else{
			this.clazz= (Class<T>)genericSuperclass;
		}
	}

	public Class<T> getClazz() {
		return clazz;
	}
}
public class UserService extends BaseHibernateDao<User, Integer>{

}


测试实例:

public class TestUserService {
	public static void main(String[] args) {
		UserService userService = new UserService();
		System.out.println(userService.getClass());
	}
}

运行结果:

class cn.tzz.lang.clazz.User

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java反射获得泛型参数GETGENERICSUPERCLASS()

public class Person { } import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type;...

使用getGenericSuperclass()和getActualTypeArguments()将DAO做成泛型

一、getGenericSuperclass()和getActualTypeArguments()基本用法: import java.lang.reflect.ParameterizedType;...

【SSH网上商城项目实战03】使用EasyUI搭建后台页面框架

前面两节,我们整合了SSH并且抽取了service和action部分的接口,可以说基本开发环境已经搭建好了,这一节我们搭建一下后台的页面。我们讨论一下两种搭建方式:基于frameset和基于easyU...

JAVA-反射-getGenericSuperclass()介绍

package com.learn.test; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type;...

保姆

2008年5月22日 星期四 9:16:58  邻居在院子里捡了只小奶猫,可是她要去上海,于是我就成了猫保姆。   自从把白白的孩子送出去,好久没有见过小奶猫了。   小家伙整体是白色带的,头顶和尾巴...

java反射之getGenericSuperclass方法的用处

java 反射 注解

Java中BaseDao方法以(ParameterizedType) getClass().getGenericSuperclass().getActualTypeArguments()[0]处理方式

这种写法一般都会在基类中看到,而且是使用了JAVA泛型的,比如我们J2EE中的BaseDAO什么的,请看代码,其实简写了,分开写就明了了。在BaseDao中经常写一个单独的方法,如下: private...

getGenericSuperclass()和getSuperclass()

一.说明 1.Class getSuperclass():返回本类的父类 2.Type getGenericSuperclass():返回本类的父类,并且包含泛型参数信息 二.例子 1.Cla...

getGenericSuperclass getSuperclass 区别

//三大框架学完了,现在自己正在创建基类这样Hibernate的操作就不用一个一个去创建。所以需要调用泛型getGenericSuperclass 来解决这个问题。希望我能把这个问题说明白 现在我先...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)