通过getGenericSuperclass方法可以获取当前对象的直接超类的 Type
是父类。超类(SuperClass):用java术语来讲,被继承的类称为超类(SuperClass),也有叫做父类,继承的类称为子类。
通过getGenericSuperclass方法可以获取当前对象的直接超类的 Type
Java代码 复制代码 收藏代码
1.package cn.tzz.lang.clazz;
2.
3.public class User {
4.
5. private Integer id;
6. private String name;
7. public Integer getId() {
8. return id;
9. }
10. public void setId(Integer id) {
11. this.id = id;
12. }
13. public String getName() {
14. return name;
15. }
16. public void setName(String name) {
17. this.name = name;
18. }
19.
20.}
Java代码 复制代码 收藏代码
1.public class BaseHibernateDao<T,ID extends Serializable> {
2.
3. private Class<T> clazz;
4.
5. public BaseHibernateDao(){
6. //当前对象的直接超类的 Type
7. Type genericSuperclass = getClass().getGenericSuperclass();
8. if(genericSuperclass instanceof ParameterizedType){
9. //参数化类型
10. ParameterizedType parameterizedType= (ParameterizedType) genericSuperclass;
11. //返回表示此类型实际类型参数的 Type 对象的数组
12. Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
13. this.clazz= (Class<T>)actualTypeArguments[0];
14. }else{
15. this.clazz= (Class<T>)genericSuperclass;
16. }
17. }
18.
19. public Class<T> getClazz() {
20. return clazz;
21. }
22.}
Java代码 复制代码 收藏代码
1.public class UserService extends BaseHibernateDao<User, Integer>{
2.
3.}
Java代码 复制代码 收藏代码
1.public class TestUserService {
2. public static void main(String[] args) {
3. UserService userService = new UserService();
4. System.out.println(userService.getClass());
5. }
6.}
运行结果:
class cn.tzz.lang.clazz.User
是父类。超类(SuperClass):用java术语来讲,被继承的类称为超类(SuperClass),也有叫做父类,继承的类称为子类。
通过getGenericSuperclass方法可以获取当前对象的直接超类的 Type
Java代码 复制代码 收藏代码
1.package cn.tzz.lang.clazz;
2.
3.public class User {
4.
5. private Integer id;
6. private String name;
7. public Integer getId() {
8. return id;
9. }
10. public void setId(Integer id) {
11. this.id = id;
12. }
13. public String getName() {
14. return name;
15. }
16. public void setName(String name) {
17. this.name = name;
18. }
19.
20.}
Java代码 复制代码 收藏代码
1.public class BaseHibernateDao<T,ID extends Serializable> {
2.
3. private Class<T> clazz;
4.
5. public BaseHibernateDao(){
6. //当前对象的直接超类的 Type
7. Type genericSuperclass = getClass().getGenericSuperclass();
8. if(genericSuperclass instanceof ParameterizedType){
9. //参数化类型
10. ParameterizedType parameterizedType= (ParameterizedType) genericSuperclass;
11. //返回表示此类型实际类型参数的 Type 对象的数组
12. Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
13. this.clazz= (Class<T>)actualTypeArguments[0];
14. }else{
15. this.clazz= (Class<T>)genericSuperclass;
16. }
17. }
18.
19. public Class<T> getClazz() {
20. return clazz;
21. }
22.}
Java代码 复制代码 收藏代码
1.public class UserService extends BaseHibernateDao<User, Integer>{
2.
3.}
Java代码 复制代码 收藏代码
1.public class TestUserService {
2. public static void main(String[] args) {
3. UserService userService = new UserService();
4. System.out.println(userService.getClass());
5. }
6.}
运行结果:
class cn.tzz.lang.clazz.User