(1) 用new语句创建对象,这是最常见的创建对象的方法。
(2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
(3) 调用对象的clone()方法。
(4) 运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。
一.用new语句创建对象
User user = new User()
二.运用反射手段
(1)调用java.lang.Class.newInstance()
Class.forName(classname).newInstance()
Wife wife = (Wife) Class.forName("com.java.clone.Wife").newInstance();
(2)调用java.lang.reflect.Constructor类的newInstance()
Constructor<Wife> constructor = Wife.class.getDeclaredConstructor(int.class,String.class);
Wife wife = (Wife) constructor.newInstance(1,"nihao");
三.调用对象的clone()方法
详情参考:http://ncs123.iteye.com/blog/1775631
Wife wife = new Wife(1,"wang"); Wife wife2 = null; wife2 = (Wife) wife.clone();//运用clone()方法产生新对象
四.运用反序列化手段
被序列化的对象必须implements Serializable
public class BeanUtil {
@SuppressWarnings("unchecked")
public static <T> T cloneTo(T src) throws RuntimeException {
ByteArrayOutputStream memoryBuffer = new ByteArrayOutputStream();
ObjectOutputStream out = null;
ObjectInputStream in = null;
T dist = null;
try {
out = new ObjectOutputStream(memoryBuffer);
out.writeObject(src);
out.flush();
in = new ObjectInputStream(new ByteArrayInputStream(
memoryBuffer.toByteArray()));
dist = (T) in.readObject();
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
if (out != null)
try {
out.close();
out = null;
} catch (IOException e) {
throw new RuntimeException(e);
}
if (in != null)
try {
in.close();
in = null;
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return dist;
}
public static void main(String[] args){
Husband husband = new Husband(1);
Wife wife = new Wife(1,"jin");
husband.setWife(wife);
Husband husband2 = cloneTo(husband);//运用反序列生成了一个对象
}
}
相关推荐
Java创建数组的方式主要涵盖了一维数组的声明、创建和初始化,这是编程中基本的数据结构操作。下面我们将详细探讨这些知识点。 1. **一维数组的声明** 在Java中,声明数组有两种方式: - `type[] arrayName;` ...
Java对象是由类实例化的结果,当我们使用`new`关键字创建一个对象时,实际上经历了以下几个步骤: 1. **类加载检查**:虚拟机首先检查`new`指令的参数是否能在常量池中定位到一个类的符号引用。如果该类尚未被加载...
总结来说,虽然两种方式都能创建线程,但实现Runnable接口通常更受欢迎,因为它更灵活,且可以避免由于单继承带来的问题。在实际开发中,根据项目需求和代码设计选择合适的方法。同时,理解线程的并发执行机制,正确...
在Java中,类是创建对象的模板或蓝图,它定义了一组属性(数据成员)和方法(函数)。而对象则是类的实例,它拥有类所定义的属性和方法。例如,我们可以定义一个名为“Person”的类,包含姓名、年龄属性和说话的方法...
### JAVA单例模式的几种实现方法 #### 一、饿汉式单例类 饿汉式单例类是在类初始化时就已经完成了实例化的操作。这种实现方式简单且线程安全,因为实例化过程是在编译期间完成的,不会受到多线程的影响。 **代码...
在Java中,对象的大小通常可以通过以下几种方式来计算: 1. **使用Java API**:Java 9及以上版本引入了一个名为`sun.misc.Unsafe`的API,虽然它不是公开的,但可以通过反射访问。`Unsafe`类提供了一个`...
在提供的压缩包文件中,"三种方式(原始方式_spring_jndi)实现java远程调用(rmi)"包含了相关的示例代码,帮助开发者理解并实践这三种RMI实现方法。在MyEclipse或其他Java开发环境中导入这些代码,可以进行调试和...
- 在Java中,**创建对象**是使用类的模板来实例化一个具体的实例的过程。 - **创建对象**通常通过`new`关键字实现,例如: ```java Student student = new Student(); ``` - **对象**在内存中的存储状态分为两个...
Java面向对象练习题经典 Java面向对象练习题是Java编程语言中非常重要的一... 这个Java程序中定义了一个名为abc的类,该类中有一个main方法,该方法创建了一个名为AB的对象,并将其初始化为"Hello!"和"I love JAVA."。
工厂方法是一种设计模式,它提供了一种创建对象的抽象,允许子类改变实例化过程。单例模式确保一个类只有一个实例,并提供全局访问点。 总的来说,Java实例化对象是编程中的基本操作,它涉及到类的构造,内存分配,...
标题中的“java对象复制克隆”主要涉及的是深拷贝,这是一种创建一个新对象的方式,新对象不仅复制了原对象的所有属性,还复制了嵌套的对象引用,使得修改复制后的对象不会影响到原始对象。 **浅拷贝**:在浅拷贝中...
这里我们将探讨三种常见的Java创建对象的方法:使用`new`关键字、使用`Object.clone()`以及通过反序列化。 1. **使用`new`关键字创建对象** 这是最常见也是最直接的方法。当类的实例需要被创建时,我们可以通过`...
在Java编程语言中,面向对象程序设计(Object-Oriented Programming, OOP)是一种核心的编程范式,它基于“对象”概念,将数据和处理数据的方法封装在一起,以实现代码的模块化和可重用性。这个压缩包文件"JAVA面向...
11. **反射机制**:反射是Java提供的一种强大的工具,可以在运行时检查类、接口、字段和方法的信息,并能动态地创建对象和调用方法。 12. **注解(Annotation)**:注解提供了一种安全的方式,向编译器或JVM提供元...
2. 类和对象:如何定义类,创建对象,以及成员变量和成员方法的使用。 3. 构造函数:用于初始化新创建的对象,理解无参构造和带参构造的使用场景。 4. 继承:展示如何使用extends关键字实现类的继承,以及super...
本篇文章将详细探讨Java中的几种创建型设计模式,并通过具体的DEMO来阐述它们的应用。 1. 单例模式(Singleton): 单例模式确保一个类只有一个实例,并提供全局访问点。在Java中,可以通过懒汉式(线程不安全)、...
在这个例子中,我们定义了一个泛型对象池,通过`ObjectFactory`接口来创建对象。`borrowObject`方法负责从池中取出一个对象,`returnObject`方法则将对象放回池中。为了保证线程安全,这里使用了`synchronized`...