Java创建对象的方式你知道几种???

这篇具有很好参考价值的文章主要介绍了Java创建对象的方式你知道几种???。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

准备工作:首先创建一个学生类。

import java.io.Serializable;

public class Student implements Serializable {
    String name;
    int age;
    int score;

    public Student() {
    }

    public Student(String name, int age, int score) {
        this.name = name;
        this.age = age;
        this.score = score;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }
}

1.通过new关键字来创建对象。

 Student s1=new Student("张三",15,78);

2.通过反射的构造方法来创建对象。

//反射
        Constructor<Student> declaredConstructor = Student.class.getDeclaredConstructor(String.class, int.class, int.class);
        Student stu = declaredConstructor.newInstance("熊爱明", 15, 89);
        System.out.println(stu);

 不懂反射的同学可以看这里:你还不会反射吧,快来吧!!!_明天更新的博客-CSDN博客

 3.通过克隆来创建对象。

import com.sun.xml.internal.messaging.saaj.util.ByteInputStream;
import sun.misc.Unsafe;

import java.io.*;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
import java.lang.reflect.Constructor;

public class Test {
    public static void main(String[] args) throws Throwable {
        //克隆
        Student student=new Student("张三",15,78);
        Object clone = student.clone();
        System.out.println(clone);
        
    }
}

4.通过反序列化来创建对象。(Student类实现Serializable接口)

import com.sun.xml.internal.messaging.saaj.util.ByteInputStream;
import sun.misc.Unsafe;

import java.io.*;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
import java.lang.reflect.Constructor;

public class Test {
    public static void main(String[] args) throws Throwable {
        //反序列化
        byte[] bytes = serialize(student);
        Student s2 = (Student)deserialize(bytes);
        System.out.println(s2);

    }
    private static byte[] serialize(Student student) throws IOException{
        ByteArrayOutputStream baos=new ByteArrayOutputStream();
        ObjectOutputStream oos = new ObjectOutputStream(baos);
        oos.writeObject(student);
        byte[] bytes = baos.toByteArray();
        return bytes;
    }
    private static Object deserialize(byte[] bytes) throws IOException,ClassNotFoundException{
        ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes));
        return ois.readObject();
    }
}

5.通过MethodHandle  API来创建对象。文章来源地址https://www.toymoban.com/news/detail-680312.html

//MethodHandle API
        MethodHandle constructor = MethodHandles.lookup().findConstructor(Student.class, MethodType.methodType(void.class, String.class, int.class, int.class));
        Student s = (Student)constructor.invoke("李四", 45, 89);
        System.out.println(s);

到了这里,关于Java创建对象的方式你知道几种???的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java中对象和Map互相转换的几种方式

    在Java中,将对象和Map相互转换是常见的操作,可以通过不同的方式实现这种转换。以下是几种常见的方法以及示例说明: 1. 使用Hutool工具类 Hutool是一个优秀的Java工具包,提供了丰富的工具方法,其中就包括对象和Map之间转换的工具方法。 示例: Hutool的 BeanUtil 提供了 bean

    2024年02月03日
    浏览(30)
  • Java创建对象的4种方式

    new 反射 Clone 反序列化 最常见的创建对象的方式,通过这种方式我们还可以调用任意的构造器(无参的和有参的) Class.newInstance 这是我们运用反射创建对象时最常用的方法。Class类的newInstance使用的是类的public的无参构造器。因此也就是说使用此方法创建对象的前提是必须有

    2024年02月09日
    浏览(32)
  • Java 创建对象的7种方式

    这是最常见的创建对象的方式。使用 new ,调用对象的构造方法来创建一个新的实例。 Java中的每个类都有一个名为 Class 的类对象,可以使用它的 newInstance() 方法创建类的实例。这种方式要求类必须有一个无参的构造方法。 Java的反射机制允许在运行时动态地获取类的信

    2024年02月06日
    浏览(31)
  • 常用的将Java的String字符串转具体对象的几种方式

    Java对象以User.class为例 ,注意:代码中使用到了lombok的@Data注解 以上就是常用的几种String转具体的java对象操作

    2024年04月11日
    浏览(36)
  • java 对象list使用stream根据某一个属性转换成map的几种方式

    可以使用Java 8中的Stream API将List转换为Map,并根据某个属性作为键或值。以下是一些示例代码: 在这个示例中,将Person对象列表转换为Map,其中键为Person对象的name属性,值为Person对象本身。 在这个示例中,将Person对象列表转换为Map,其中键为Person对象本身,值为Person对象的

    2024年02月13日
    浏览(41)
  • 前端中对象的几种创建方式

    创建对象的几种方式: 1.字面量方式 2.工厂模式 3.构造函数模式 4.原型模式 缺点:创建多个对象时,需要重复代码,不能复用。 作用:批量创建同类型对象,降低代码冗余度。 缺点:创建出的新对象,不知道是什么Person或者Animal类型,需看函数内部代码。 构造函数 是一种特

    2023年04月08日
    浏览(36)
  • Java开发或调用WebService的几种方式

    1.服务端开发与发布 编写接口 编写接口的实现类 发布服务 访问已发布的WebService服务 打开浏览器输入http://127.0.0.1:8888/JaxWSTest?wsdl访问,如下面内容 截图内容1 浏览器中输入wsdl文档中的 http://127.0.0.1:8888/JaxWSTest?xsd=1可查看绑定的参数等信息看如下图: 截图内容2 jdk自带生成W

    2024年01月17日
    浏览(40)
  • Java面试题Class类的理解?创建类的对象的方式?

    1.类的加载过程: 程序经过 javac.exe 命令以后,会生成一个或多个字节码文件(.class结尾)。 接着我们使用 java.exe 命令对某个字节码文件进行解释运行。相当于将某个字节码文件 加载到内存中。此过程就称为类的加载 。加载到内存中的类,我们就称为运行时类,此运行时类,

    2024年02月10日
    浏览(27)
  • JAVA开发(通过Apollo注入配置信息的几种方式)

    在springCloud中有一个重要的组件就是配置中心,config:server,用于配置springboot中需要注入的各种配置项。但是现在发现越来越多的企业使用Apollo进行集成。博主在开发中也是使用Apollo进行配置。本文总结Apollo的的使用,集成到springboot,和注入方式等。   Apollo是携程框架部门研

    2024年02月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包