java 创建对象的几种方式
2016-07-27 10:55
381 查看
最简单的方式 使用 new 关键字,调用构造函数
试验结果:`cc is created
使用Class类的newInstance方法,调用构造函数
试验结果
使用Reflect包中的Constructor类的newInstance方法,调用构造函数
试验结果
使用clone方法创建对象,其中Cloneable接口为标志接口,Clonable接口没有一个方法
试验结果:
上面的构造函数是由 new 的操作产生的,说明clone方法并没有调用构造函数
package aa; public class CC { public CC() { // TODO Auto-generated constructor stub System.out.println("cc is created"); } public static void main(String[] args) { // TODO Auto-generated method stub CC cc = new CC(); } }
试验结果:`cc is created
使用Class类的newInstance方法,调用构造函数
package aa; public class CC { public CC() { // TODO Auto-generated constructor stub System.out.println("Class.forName()"); System.out.println("cc is created"); } public static void main(String[] args) { // TODO Auto-generated method stub try { CC C = (CC)Class.forName("aa.CC").newInstance(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
试验结果
Class.forName() cc is created
使用Reflect包中的Constructor类的newInstance方法,调用构造函数
package aa; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; public class CC { public CC() { // TODO Auto-generated constructor stub System.out.println("constructor.newInstance()"); System.out.println("cc is created"); } public static void main(String[] args) { // TODO Auto-generated method stub try { Constructor<CC> constructor = CC.class.getConstructor(); CC c = constructor.newInstance(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
试验结果
constructor.newInstance() cc is created
使用clone方法创建对象,其中Cloneable接口为标志接口,Clonable接口没有一个方法
package aa; public class CC implements Cloneable { public CC() { // TODO Auto-generated constructor stub System.out.println("sss"); System.out.println("cc is created"); } @Override protected Object clone() throws CloneNotSupportedException { // TODO Auto-generated method stub CC cc =null; cc = (CC) super.clone(); return cc; } @SuppressWarnings("unused") public static void main(String[] args) { // TODO Auto-generated method stub CC cc = new CC(); try { CC cc2 = (CC) cc.clone(); } catch (CloneNotSupportedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
试验结果:
sss cc is created
上面的构造函数是由 new 的操作产生的,说明clone方法并没有调用构造函数
相关文章推荐
- Java GUI学习笔记之初识AWT和Swing
- java.net.Url类的应用
- SpringMVC拦截器(资源和权限管理)
- Thrift-java学习小结
- Java 反射机制(1)
- springMVC 拦截器简单配置
- spring开发相关的资料
- struts2拦截器(Interceptor)与传统拦截器(Filter)
- Java 生成应用程序
- java 注解 三
- jdk常用类
- struts2 package 属性说明
- java中获取本地文件的编码
- java 注解 二
- Struts2中配置全局拦截器的方法
- Java中的值传递
- java 注解 一
- Java学习之多线程
- java 封装
- Java8一些新特性