详解java中this.getClass()和super.getClass()的实例
前言:
遇到this.getClass()和super.getClass()的返回值感到疑惑,经过探索豁然开朗。
getClass()是java中Object类的一个方法,其原型为:
1
|
public final Class<?> getClass() |
返回值为 当前运行时类的Class对象。
所以写了一段代码来说明:
getClass()不受this和super影响,而是有当前的运行类决定的。
代码如下:
父类:
1
2
3
4
5
6
7
8
9
10
11
|
package com.cyou.lijiang_hw; import java.lang.reflect.ParameterizedType; public class BaseDAO { public BaseDAO() { System.out.println( "==============BaseDAO initialization=============" ); System.out.println( "this.getClass() ---->" + this .getClass()); System.out.println( "super.getClass()---->" + super .getClass()); } } |
子类:
1
2
3
4
5
6
7
8
9
|
package com.cyou.lijiang_hw; public class UserDAO extends BaseDAO<User> { public UserDAO() { System.out.println( "\n==============UserDAO initialization=============" ); System.out.println( "this.getClass() ---->" + this .getClass()); System.out.println( "super.getClass()---->" + super .getClass()); } } |
测试类:
1
2
3
4
5
6
7
|
package com.cyou.lijiang_hw; public class Test { public static void main(String[] args) { UserDAO userDAO = new UserDAO(); } } |
输出结果为:
1
2
3
4
5
6
7
|
==============BaseDAO<T> initialization============= this .getClass() ----> class com.cyou.lijiang_hw.UserDAO super .getClass()----> class com.cyou.lijiang_hw.UserDAO ==============UserDAO initialization============= this .getClass() ----> class com.cyou.lijiang_hw.UserDAO super .getClass()----> class com.cyou.lijiang_hw.UserDAO |
以上就是详解java中this.getClass()和super.getClass()的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
原文链接:http://ljlowkey.iteye.com/blog/2029126