首页 > 编程语言 >【Java】创建对象的几种方式

【Java】创建对象的几种方式

时间:2024-10-12 09:23:02浏览次数:6  
标签:java 05 创建对象 value 几种 Java MyClass public out

【Java】创建对象的几种方式

合集 - Java基础(11)1.【Java】 Integer包装类缓存(cache)2.【java】Java之关于基本数据类型和引用数据类型的存放位置3.【java】ArrayList和LinkedList的区别4.【java】【集合类】HashMap 与HashTable的区别5.【Java】的四种引用类型6.【Java】创建对象的几种方式7.【java】内存溢出(OOM)8.【java】问题排查-内存溢出(OOM)-汇总指南9.【java】异常 (详解)10.【java】【集合类】HashMap之扩容原理11.【java】【集合类】ArrayList扩容机制收起

1.new创建新的对象

String str = new String("str");

2.通过Java的反射机制

public static void main(String[] args) throws Exception {
        // 获取类的Class对象
       String str = (String)Class.forName("java.lang.String").newInstance();
    System.out.println(str); 
}

3.通过clone机制(克隆机制)

复制代码 复制代码
=========================Myclass.java===========================================
public class MyClass implements Cloneable { private int value;
public MyClass(int value) {
    this.value = value;
}

public int getValue() {
    return value;
}

@Override
public MyClass clone() throws CloneNotSupportedException {
    return (MyClass) super.clone();
}

}
=Main.java===================
public class Main {
public static void main(String[] args) throws CloneNotSupportedException {
MyClass obj1 = new MyClass(10);
MyClass obj2 = obj1.clone();

    System.out.println(obj1.getValue()); // 输出:10
    System.out.println(obj2.getValue()); // 输出:10
}

}

复制代码 复制代码

4.通过序列化机制

  通过序列化机制来创建新的对象。序列化是将对象转换为字节流的过程,以便可以将其存储在磁盘上或通过网络传输。反序列化则是将字节流转换回对象的过程。

复制代码 复制代码
===================================================================================================
import java.io.*;

public class MyClass implements Serializable {
private int value;

public MyClass(int value) {
this.value = value;
}

public int getValue() {
    return value;
}

private void writeObject(ObjectOutputStream out) throws IOException {
    out.writeInt(value * 2);
}

private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
    value = in.readInt();
}

}

public class Main {
public static void main(String[] args) throws IOException, ClassNotFoundException {
MyClass obj1 = new MyClass(10);
FileOutputStream fileOut = new FileOutputStream("obj1.ser");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(obj1);
out.close();
fileOut.close();

    FileInputStream fileIn = new FileInputStream("obj1.ser");
    ObjectInputStream in = new ObjectInputStream(fileIn);
    MyClass obj2 = (MyClass) in.readObject();
    in.close();
    fileIn.close();

    System.out.println(obj1.getValue()); // 输出:10
    System.out.println(obj2.getValue()); // 输出:20
}

}

复制代码 复制代码

 

5、构造函数对象的newInstance()方法

类Constructor也有newInstance方法,这一点和Class有点像。从它的名字可以看出它与Class的不同,Class是通过类来创建对象,而Constructor则是通过构造器。依然使用第一个例子中的Test类。

复制代码 复制代码
public static void main(String[] args) throws Exception {
    Constructor<Test> constructor;
   try {
        constructor = Test.class.getConstructor();
       Test t = constructor.newInstance();
   } catch (InstantiationException |
        IllegalAccessException |
        IllegalArgumentException |
        InvocationTargetException |
        NoSuchMethodException |
        SecurityException e) {
        e.printStackTrace();
   }
}
复制代码 复制代码 原文链接:https://www.cnblogs.com/zzsuje/p/18186518

标签:java,05,创建对象,value,几种,Java,MyClass,public,out
From: https://www.cnblogs.com/sunny3158/p/18459814

相关文章

  • java计算机毕业设计管易tms运输智能监控管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在现代物流行业中,运输管理系统的智能化与高效化已成为提升企业竞争力的关键因素之一。随着电子商务和快递业务的迅猛发展,货物运输量急剧增加,传统的人......
  • java计算机毕业设计电子导游系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着旅游业的蓬勃发展,人们对于旅游体验的需求日益多样化和个性化。传统的导游方式已难以满足现代游客对于信息获取、行程规划及互动体验的需求。在此......
  • java计算机毕业设计M站内容管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,各类在线服务平台应运而生,为用户提供便捷、高效的服务体验。M站内容管理系统作为一种专门为管理网站内容设计的系统,其重要......
  • java+vue计算机毕设高教教师考核系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在当今高等教育快速发展的背景下,高校教师作为知识传授与科研创新的重要力量,其工作表现与贡献评估显得尤为关键。传统的高校教师考核方式往往依赖于纸......
  • java+vue计算机毕设个人事务管理系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的迅猛发展和个人生活节奏的加快,个人事务管理变得越来越复杂和繁琐。传统的纸质记录或简单的电子文档管理方式已难以满足现代人对于高效......
  • java+vue计算机毕设高校教师科研文献管理系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着高等教育的快速发展,高校教师科研活动日益频繁,产生的科研文献数量急剧增加。传统的文献管理方式,如纸质存档、简单的电子文档存储等,已难以满足当前......
  • 深入解析Spring AI框架:在Java应用中实现智能化交互的关键
    今天我们的SpringAI源码分析主题即将结束。我已经对自己感兴趣的基本内容进行了全面的审视,并将这些分析分享给大家。如果你对这个主题感兴趣,可以阅读以下几篇文章。每篇文章都层层递进,深入探讨相关内容。考虑到长文可能让大家感到疲惫,我采用了逐步推进的方式,确保每一篇都简明易懂......
  • 在Java程序中监听mysql的binlog
    目录1、背景2、mysql-binlog-connector-java简介3、准备工作1、验证数据库是否开启binlog2、开启数据库的binlog3、创建具有REPLICATIONSLAVE权限的用户4、事件类型eventType解释1、TABLE_MAP的注意事项2、获取操作的列名5、监听binlog的position1、从最新的binlog位置开始监......
  • Java中class对象的学习
    Class对象目录Class对象获取class对象的三种方法获取类的各种信息获取类名获取类修饰符获取包的信息获取父类的class对象获取接口信息构造函数Constructor两种创建对象的方式使用Class.forName()加载类并创建对象使用Class.forName()加载类,并调用特定的构造器获取class对象的三......
  • 基于nodejs+vue基于JAVA的城镇社区服务管理平台[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,城镇化进程的加快,社区服务管理面临着前所未有的挑战与机遇。传统的社区服务管理模式存在信息不透明、服务效率低、居民参与度不高等......