package test;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.Serializable;
public class Test implements Serializable,Cloneable {
private static final long serialVersionUID = 0L;
public Test() {
System.out.println("调用了构造方法");
}
public Object clone() {
Object obj = null;
try {
obj = super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return obj;
}
/**
* 创建对象的四种方式
* 1.使用new关键字 2.反射机制 3.使用clone方法 4.反序列化
*/
public static void main(String[] args) throws Exception {
//使用new关键字
Test t1 = new Test();//调用了构造方法
//反射机制
Class c = (Class)Class.forName("test.Test");
Test t2 = (Test)c.newInstance();//调用了构造方法
//使用clone方法
Test t3 = (Test)t2.clone();
//反序列化
byte[] head = { -84, -19, 0, 5, 115, 114, 0 };
byte[] ass = { 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 120, 112 };
String name = Test.class.getName();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos.write(head);
baos.write(name.length());
baos.write(name.getBytes());
baos.write(ass);
baos.flush();
baos.close();
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray()));
Test t4 = (Test)ois.readObject();
System.out.println(t1);
System.out.println(t2);
System.out.println(t3);
System.out.println(t4);
}
}
/*Output:
调用了构造方法
调用了构造方法
test.Test@ca0b6
test.Test@10b30a7
test.Test@1a758cb
test.Test@1b67f74
*/
从输出结果看,4个对象处于不同的内存位置,即4个对象互不相等。
分享到:
相关推荐
java在创建对象的时候使用的创建对象可以用到很多模式,比如工厂模式。。。反射。。等等
Java创建对象的四种方法.doc
Java创建对象的四种方法[借鉴].pdf
java创建对象的5种方法,每种方法都有demo,并且亲自运行通过的,有需要的可以自行下载参考
详细总结了java中创建对象的不同方式和String创建对象的不同方式
本项目基于java创建xml文档对象,方便对xml文档的读写。
8.java子类对象的创建.zip8.java子类对象的创建.zip8.java子类对象的创建.zip8.java子类对象的创建.zip8.java子类对象的创建.zip8.java子类对象的创建.zip8.java子类对象的创建.zip8.java子类对象的创建.zip8.java...
这是我用于测试,主要用于jni创建java对象病操作
详细介绍java对象的创建过程,以致对java基础详细的掌握!
Java 创建对象的五种方式 使用 new 来创建对象 使用 newInstance 方法来创建 使用反射来创建对象 使用对象克隆来创建对象 使用反序列化创建对象
Java试题-5:应用反射创建对象,调用对象方法 反射为Java的高级技术应用
9.java学习第九章——对象的创建和使用+构造方法+方法重载——作业的形式:创建对象在JVM中的存储状态(内存图).pdf
7.java对象的创建和使用.zip7.java对象的创建和使用.zip7.java对象的创建和使用.zip7.java对象的创建和使用.zip7.java对象的创建和使用.zip7.java对象的创建和使用.zip7.java对象的创建和使用.zip7.java对象的创建和...
Java编程中对象的创建与使用以及方法的重构与重载的区别说明
74.java类的定义与创建对象.zip74.java类的定义与创建对象.zip74.java类的定义与创建对象.zip74.java类的定义与创建对象.zip74.java类的定义与创建对象.zip74.java类的定义与创建对象.zip74.java类的定义与创建对象....
本次实验进一步学习了Java的相关知识,深入理解了面向过程与面向对象语言的区别,了解了面向对象语言的三大特征,掌握类的声明和构造方法,掌握了对象的创建方法与创建机制,掌握了成员变量、类变量和局部变量区别,...
本文主要对比Java与C++在创建对象时的不同,仅代表个人观点,如有不合理之处,望大家批评指正。闲话少说,直奔主题。 Java和C++都是面向对象的编程语言,然而Java和C++在创建对象时却存在不同的方式,由于方式的...
Java对象的创建过程结合反射进行解析。
借助于漫画展示的形式,面向对象的简、由类创建一个对象的方法、类的编写与对象的创建、类的构造函数、类的方法、修饰符、Java中的封装/继承/多态等特征、Java中的线程、用Java创建一个小世界、多线程共享数据,以及...
介绍java对象的创建、初始化、和引用。并分析一下JAVA中对象创建和初始化过程中涉及的相关概念问题。