J2SE(七)Java之类的实例化
来源:互联网 发布:树莓派ubuntu系统 编辑:程序博客网 时间:2024/05/21 17:17
Java中创建(实例化)对象的五种方式
1、用new语句创建对象;
2、运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。如:Object obj = Class.forName("java.lang.Object").newInstance();
4、调用对象的clone()方法。
5、通过I/O流(包括反序列化),如运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。
1、用new语句创建对象;
2、运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。如:Object obj = Class.forName("java.lang.Object").newInstance();
4、调用对象的clone()方法。
5、通过I/O流(包括反序列化),如运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。
请看如下例子:
package com.review;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;public class TestClone implements Cloneable, Serializable {private static final long serialVersionUID = -3859091253969968165L;private int age;private String name;public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public TestClone(int age, String name) {this.age = age;this.name = name;}public TestClone() {super();}@Overrideprotected Object clone() throws CloneNotSupportedException {// TODO Auto-generated method stubreturn super.clone();}@Overridepublic String toString() {return "TestClone [age=" + age + ", name=" + name + "]";}public static void main(String[] args) throws CloneNotSupportedException,InstantiationException, IllegalAccessException,ClassNotFoundException, IOException {// newTestClone tc = new TestClone(18, "obj1");// cloneTestClone tc2 = (TestClone) tc.clone();// newInstanceTestClone tc3 = (TestClone) Class.forName("com.review.TestClone").newInstance();// I/OFileOutputStream fos = new FileOutputStream("testClone.tmp");ObjectOutputStream oos = new ObjectOutputStream(fos);oos.writeObject(tc);oos.close();fos.close();FileInputStream fis = new FileInputStream("testClone.tmp");ObjectInputStream ois = new ObjectInputStream(fis);TestClone tc4 = (TestClone) ois.readObject();ois.close();fis.close();System.out.println(tc.toString());System.out.println(tc2.toString());System.out.println(tc3.toString());System.out.println(tc4.toString());}}结果集如下:
TestClone [age=18, name=obj1]TestClone [age=18, name=obj1]TestClone [age=0, name=null]TestClone [age=18, name=obj1]在调用newInstance方法时,调用的是TestClone的无参构造方法,所以age跟name都显示的是默认值。
0 0
- J2SE(七)Java之类的实例化
- J2SE(四)Java之类的详解
- J2SE(六)Java之类的初始化
- J2SE(五)Java之类的加载机制
- Java之类实例化的顺序
- J2SE 必知必会(七)
- java-J2SE学习笔记(七)
- C++细节学习之类的实例化
- J2SE之类/对象
- java之类的初始化
- Java之类的封装
- Java之类的继承
- Java之类的知识
- Java之类的生命周期
- 阿里校招之类实例化的顺序
- Java初学(七)——J2SE之面向对象编程6(数组)
- Java反射之类的实例对象的三种表示方式
- J2SE 5.0新特性(七)新的线程模型与并发库
- set、list、map
- canvas -方形抽奖
- Google官方MVP示例之TODO-MVP
- iOS开发-NSAttributedString富文本
- ubuntu 搭建LAMP环境并配置
- J2SE(七)Java之类的实例化
- Android 编程下 SQLite 大数据量操作优化
- Overload(重载)Override(重写)
- OpenCV学习笔记(二)—— OpenCV整体结构
- Caffe学习系列(3):视觉层(Vision Layers)及参数
- 数组指针的声明和引用
- 笔试面试学习之路(二)
- Lintcode 将二叉查找树转换为双链表
- easyUI设置下拉列表默认值