《Java基础知识》 Java创建对象的5种方法
2021/5/4 22:25:16
本文主要是介绍《Java基础知识》 Java创建对象的5种方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
学习的过程,遇到很多情况需要通过非“new”的方式创建对象。
第一种(new)
public class Test { @Override public String toString() { return "===== Test ====="; } }
public class TestDemo { public static void main(String[] args) { Test test = new Test(); // 创建对象 test.toString(); } }
第二种(class.newInstance)
public class TestDemo { public static void main(String[] args) { Test test = null; try { test = (Test) Class.forName("demo.knowledgepoints.createobject.Test").newInstance(); // 创建对象 } catch (Exception e) { e.printStackTrace(); } System.out.println(test.toString()); } }
第三种(Constructor.newInstance)
public class Test { public Test(String str){ System.out.println(str); } @Override public String toString() { return "===== Test ====="; } }
public class TestDemo { public static void main(String[] args) { try { Constructor<Test> constructor = Test.class.getConstructor(String.class); Test test = constructor.newInstance("通过构造有参构造函数创建对象"); System.out.println(test.toString()); } catch (Exception e) { e.printStackTrace(); } } }
运行结果:
第四种(clone)
需要实现Cloneable接口
public class Test implements Cloneable { @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); } @Override public String toString() { return "===== Test ====="; } }
public class TestDemo { public static void main(String[] args) { Test test = new Test(); try { Test test1 = (Test)test.clone(); System.out.println(test1.toString()); } catch (CloneNotSupportedException e) { e.printStackTrace(); } } }
运行结果:
第五种(反序列化)
public class Test implements Serializable { private static final long serialVersionUID = 1L; @Override public String toString() { return "===== Test ====="; } }
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class TestDemo { public static void main(String[] args) { try { Test test = new Test(); ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("demo.knowledgepoints.createobject.obj")); out.writeObject(test); out.close(); ObjectInputStream in = new ObjectInputStream(new FileInputStream("demo.knowledgepoints.createobject.obj")); Test test1 = (Test) in.readObject(); System.out.println(test1.toString()); in.close(); } catch (Exception e) { e.printStackTrace(); } } }
运行结果:
序列化和反序列化详情参考:https://www.cnblogs.com/jssj/p/11766027.html
总结
不同的创建对象有不同的应用场景,了解这些场景对阅读源码很有帮助。
这篇关于《Java基础知识》 Java创建对象的5种方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略