Java 创建对象的四种方式

本文介绍了Java中创建对象的四种方法:使用new关键字、利用clone方法、通过反射机制及反序列化操作,并提供了示例代码说明每种方法的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java 创建对象的四种方式

1、使用new关键值创建对象
        User user = new user();
        user.setName("小明");
        user.setPass("123456");
        System.out.println(user );
2、使用clone
        User user= new User ();
        Object clone = user.clone();
        System.out.println(clone);
详细的clone (可以克隆之前的对象,之前对象需要实现接口Cloneable)
public class CloneTest {

    public static void main(String[] args) {
        try {
            cloneTest();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
    }
    static void cloneTest() throws CloneNotSupportedException {
        User user = new User();
        user.setPassWord("123456789");
        user.setUserName("小明");
        User cloneUser = (User) user.clone();
        cloneUser.setYearold(18);
        System.out.println(cloneUser.toString());

    }


}
class User implements Cloneable{
    private String userName;
    private String passWord;
    private Integer yearold;
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassWord() {
        return passWord;
    }
    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }
    public Integer getYearold() {
        return yearold;
    }
    public void setYearold(Integer yearold) {
        this.yearold = yearold;
    }
    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
    @Override
    public String toString() {
        return "User [userName=" + userName + ", passWord=" + passWord + ", yearold=" + yearold + "]";
    }
}
运行结果
User [userName=小明, passWord=123456789, yearold=18]
3、使用反射
        Class c = Class.forName("com.xxx.User");
        Object o = c.newInstance();
        System.out.println(o);
4、反序列化
        // 先序列化
        User user= new User();
        ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("user.obj"));
        os.writeObject(user);
        // 再反序列化
        ObjectInputStream is = new ObjectInputStream(new FileInputStream("user.obj"));
        Object o = is.readObject();
        System.out.println(o);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值