展开全部

1、new

使用java的关键字new来创建对象实例。构造函数链中的所有构造函数都32313133353236313431303231363533e78988e69d8331333337396331会被自动调用。Java代码:

CreateInstance  instance = new  CreateInstance  ();

2、clone

构造函数不被自动调用。

Java代码:

public class CreateInstance  implements Cloneable{

public CreateInstance getInstance() throws CloneNotSupportedException{

return (CreateInstance) this.clone();

}

}

如果需要复制上面的那个obj指向的对象实例时,调用new CreateInstance().getInstance()方法就ok了。

JDK中Object# clone()方法的原型是:protected native Object clone() throws  CloneNotSupportedException; 方法修饰符是protected,而不是public。

这种访问的不可见性使得对Object#clone()方法不可见。所以,必需重写Object的clone方法后才能使用。Java代码:

public class CreateInstance  implements Cloneable{

public CreateInstance clone throws CloneNotSupportedException{

return (CreateInstance) super.clone();

}

}

值得注意的是 :如果需要使用clone方法,必需实现java.lang.Cloneable接口,否则会抛出java.lang.CloneNotSupportedException。

另外clone方法所做的的操作是直接复制字段的内容,换句话说,这个操作并不管该字段对应的对象实例内容。

像这样字段对字段的拷贝(field to field copy)就成为"浅拷贝",clone方法所做的正是"浅拷贝"。

3、newInstance

利用java.lang.Class类的newInstance方法,则可根据Class对象的实例,建立该Class所表示的类的对象实例。

创建CreateInstace类的对象实例可以使用下面的语句(这样需要一个已经存在的对象实例)。

CreateInstance instance = CreateInstance.class.newInstance();

或者使用下面的语句(只需要存在相应的.class文件即可)

CreateInstance instance = (CreateInstance)Class.forname("com.create.instance.CreateInstance").newInstance();

如果包下不存在相应.class文件,则会抛出ClassNotFoundException。

注意 :newInstance创建对象实例的时候会调用无参的构造函数,所以必需确保类中有无参数的构造函数,否则将会抛出java.lang.InstantiationException异常。

无法进行实例化。

java new class 直接调用_java中创建对象的的两种方式具体解释,一个是new一个是调用Class类的newinstance方法?...相关推荐

  1. java多线程区别_Java中实现多线程的两种方式之间的区别

    Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线 ...

  2. java创建user类在哪里_java中创建对象有哪几种方式

    1.用new 创建对象,这是最常用的创建对象的方法. User user1 = new User(2,"青秧"); 2.运用反射,调用Java.lang.Class或者java.l ...

  3. java hashmap遍历顺序_Java中HashMap遍历的两种方式

    第一种: Map map =  HashMap(); Iterator iter = map.entrySet().iterator(); (iter.hasNext()) { Map.Entry e ...

  4. C++中调用DLL中的函数的两种方式

    一.DLL源文件: extern "C" __declspec(dllexport) int add(int a, int b) {return a + b; } 二.静态调用: ...

  5. java中创建两种线程的方式_java中创建线程的两种方式有什么区别?

    *** 一.创建线程 1.继承Thread类 定义类继承Thread, 重写run()方法, 将线程中要执行的代码写在run()方法中 创建该类对象, 调用start()方法就可以开启一条新线程, 新 ...

  6. java如何实现多线程_Java中实现多线程的两种方式

    /** * 使用Thread类模拟4个售票窗口共同卖100张火车票的程序 * * 没有共享数据,每个线程各卖100张火车票 * * @author jiqinlin * */public class  ...

  7. Java版数据结构之单向链表 新增,有序新增的两种方式,修改和删除(CRUD)

    Java版数据结构之单向链表 CRUD Java版数据结构之单向链表 新增,有序新增的两种方式,修改和删除; 留了一个疑问; 我的代码仓库:https://github.com/zhuangbinan ...

  8. Java并发基础01. 传统线程技术中创建线程的两种方式

    传统的线程技术中有两种创建线程的方式:一是继承Thread类,并重写run()方法:二是实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread.这两种方式 ...

  9. Java中HashMap遍历的两种方式

    第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Ma ...

最新文章

  1. PAT1066 Root of AVL Tree (25)(AVL树)
  2. php中的fpm_详解PHP中PHP-FPM是什么?有什么用?
  3. boost::leaf模块读取缓冲区中的文本文件并将其打印到 std::cout
  4. Expo 2010 Japan Pavilion
  5. python3 集合运算_Python 集合与集合运算
  6. 趋势 | AI技能排行榜:TensorFlow热度飙升,Python最火
  7. DUBBO:前端调用后端服务返回类名
  8. 【Computer Organization笔记16】大实验任务详细说明:支持指令流水的计算机系统设计与实现
  9. Java开发学习教程之对象的创建与使用
  10. 大学英语综合教程四 Unit 8 课文内容英译中 中英翻译
  11. 74HC138 三八译码器
  12. HTML制作简单课程表
  13. 2005中国千强镇名单
  14. android锁死横竖屏,Android 锁定横竖屏
  15. css图片滑动切换图_CSS帧动画
  16. 电商网站如何进行库存同步处理Redis+Lua
  17. vue使用siwper走马灯
  18. 软件测试面试总被拒怎么办?表姐把压箱底的面试秘籍交给了我,现在已经在上班了。
  19. python获取gps数据_Python GPS模块:读取最新的GPS数据
  20. 空气质量自动监测仪与采样泵

热门文章

  1. unicode转中文的工具
  2. 第三方应用如何在SAP Kyma上进行服务注册
  3. 使用ABAP代码获得tcode RZ11里的参数值
  4. SAP技术专家的ABAP调试器培训材料
  5. ABAP和XML数据格式互相转换的两种方式
  6. ABAP下载的病毒扫描Virus Scan
  7. Java入门算法(贪心篇)丨蓄力计划
  8. django文档_如何在django官方文档中快速找到需要的内容
  9. android 一个字符串分两行显示_重新梳理Android权限管理
  10. java jsp中控件绑定_jsp页面常用控件