如何从java中的可变对象创建不可变对象?

问题描述

如何创建不可变的 Planet 以便名称不会改变?我很挣扎,因为我认为它是具有可变对象的不可变项目。如果我错了,请纠正我。

每次我在输出中更改名称时也会更改。我错过了什么吗?

我尝试将所有字段设为私有和最终字段(不在此示例中),但我想我缺少一些代码来工作。

我知道 java.util.Date 已被弃用,但这只是举例。

import java.util.Date;   

public final class Planet {  
    String name;                                                      
    private final Date discoveryDate;  

    public Planet (String name,Date discoveryDate) {               
        this.name = name;
        this.discoveryDate = new Date(discoveryDate.getTime());    
    }

    public String getName() 
        return name;
    }

    public Date getDiscoveryDate() {               
        return new Date(discoveryDate.getTime());     
    }

    public static void main(String [] args) {
        Planet Earth = new Planet("Earth Planet",new Date(2020,01,16,17,28));

        System.out.println("Earth");
        System.out.println("------------------------------------");
        System.out.println("Earth.getName: " + Earth.getName());
        System.out.println("Earth.getDiscoveryDate: " + Earth.getDiscoveryDate());
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)