java创建对象的几种方式

废话不多说直接上代码,文末有总结。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.Constructor;

public class Main {

    public static void main(String[] args) throws Exception {
        System.out.println("java创建对象的几种方式!");
        //1.new方法
        A a = new A();
        a.setLongUsername("my name is HYK");
        //2.newInstance()方法    [使用 Class 类的 newInstance()   使用 Constructor 类的 newInstance()][基于反射的原理,前者基于后者,后者更瘦欢迎]
        A a1 = A.class.newInstance();
        a1.setLongUsername("my name is HYK");

        Constructor<A> constructor = A.class.getConstructor();
        A a2 = constructor.newInstance();
        a2.setLongUsername("my name is HYK");
        //3.Clone() 方法  [要在对象上使用 clone() 方法,我们需要实现 Cloneable 并在其中override clone() 方法。]
        B b = new B();
        b.setPassword("31321");
        B b1 = (B)b.clone();

        //4.序列化与反序列化
        // Serialization[序列化]
        B b2 = new B();
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("data.obj"));//该项目的相对根目录下
        out.writeObject(b2);
        out.close();
        System.out.println("b2的序列化结果:" + out.toString());
        //Deserialization
        ObjectInputStream in = new ObjectInputStream(new FileInputStream("data.obj"));
        B b3= (B) in.readObject();
        in.close();
        b3.setPassword("321321321321321");
        System.out.println(b3.getPassword() + ", hashcode : " + b3.hashCode());
    }
}

对象1

public class A {

    private String username;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public boolean setLongUsername(String username){
        if (username.length() < 10){
            return false;
        }
        else{
            this.username = username;
            return true;
        }
    }
}

对象2

import java.io.Serializable;

public class B implements Cloneable, Serializable {

    private String password;

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public Object clone() {
        Object obj = null;
        try {
            obj = super.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
        return obj;
    }

}

没什么可总结的,多用几次熟悉就好了,孰能生巧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值