JAVA中关于new子类对象时是否创建父类
来源:互联网 发布:把别人淘宝制成csv 编辑:程序博客网 时间:2024/06/06 05:38
JAVA中关于new子类对象时是否创建父类
今天在抽取dao层的重复代码到 BaseDaoImpl 里时遇到一个问题:怎样获取父类泛型的数据?
经过分析最后找到了答案,但是在查找资料的过程中还是有一些一下不解的地方(可能脑壳没有那么的灵活),这里就向大家分享一下。
下面直接向上代码:
A.java 父类
package com.tzq.test; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import com.tzq.bos.pojo.User; public class A<T> { /* * 有参的父类构造方法 */ public A(String test) { System.out.println("A 的有参构造方法"); } /* * 无参的父类构造方法 */ public A() { System.out.println("A 的无参构造方法"); System.out.println("当前的类名 : " + this.getClass().getName()); ParameterizedType genericSuperclass = (ParameterizedType) this.getClass().getGenericSuperclass();//获取当前类的超类(父类 ,基类),并将其转化为 参数化样式 Type[] actualTypeArguments = genericSuperclass.getActualTypeArguments();// 获取实际样式的参数(相当于获取到父类的泛型 数据) Class entityClass = (Class) actualTypeArguments[0];//获取泛型第一个数据 System.out.println("泛型的数据 : " + entityClass); } }
B.java A 的子类
package com.tzq.test; import com.tzq.bos.pojo.User; public class B extends A<User> { public B() { super();// 默认是有个语句的,就算你把他删除掉!!!!!!!!!!!!!!! // 调用父类的构造方法,一定要放在方法的首个语句 } public B(String test) { super(test); } }
Test.java
package com.tzq.test; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; public class Test { public static void main(String[] args) { System.out.println("开始new B"); B b = new B(); } }
运行Test main方法时结果:
可以看到完美的获取到泛型数据了。您可能有以下几个疑问?
一:new 子类时为什么调用了父类的构造方法?
每个构造方法的第一条语句是super(); 这是java se 的内容,所以 即使你不写,编译器在编译的时候也会为你加上。
super()方法就是调用父类的构造方法的。 自然在new子类时会调用到父类的构造方法。
为什么要这样设计呢?
仔细想想就会明白,因为构造方法体内放的是类的初始化语句。
一:父类的泛型数据是什么时候传过去的?
答:但 super();时传过去的,因为继承时已经给你父类里设置了泛型数据,但super();的自然就传过去了。
写的不好,望大神体谅。——小强
阅读全文
1 0
- JAVA中关于new子类对象时是否创建父类
- New一个子类对象的时候是否创建了父类的对象
- java中创建子类对象时总是会先创建其父类对象
- 关于创建子类对象的时候是否为父类的私有变量分配了内存
- Java中,关于在子类构造函数中调用父类构造函数完成对象创建的简单分析
- Java中创建一个子类对象会不会创建父类对象?
- Java中关于关键字new创建字符串对象的总结
- 总结创建子类时是否创建父类
- java new子类对象过程
- java继承中new子类对象的执行顺序
- Java 数组中new Object[5]语句是否创建了5个对象?
- 关于java基础中,接口里面父类的对象指向子类的引用
- 在java中怎么理解“用instanceof操作符判断父类对象是否为子类的一个实例”?
- Java关于父类引用指向子类对象
- java继承,多态方面的一个问题,定义一个父类对象,用子类new
- [ java ] java语言中的子类对象和父类对象的创建过程!
- Java 中深层理解父类引用指向子类对象
- Java 中深层理解父类引用指向子类对象
- 归并排序
- 【C++】C++友元
- 例2-23 用一个随机序列模拟中国数字地震台网记录在频率域的振幅。中国数字地震台网的采样间隔是0.02s,运用通带频率是0-5Hz的低通理想滤波器对其进行滤波。数据长度是120s。模拟一下。
- 欢迎使用CSDN-markdown编辑器
- 使用VS2010创建windows窗体应用程序
- JAVA中关于new子类对象时是否创建父类
- JAVA数据结构笔记
- POJ
- 解决:firefox安装firebug版本不兼容
- 使用Python作为计算器
- Django中的Manager类
- 把matlab双坐标轴的颜色设置为黑色
- 怎样提高https站点的访问速度
- 【C++】类和结构