首页 > 解决方案 > 如何在java中从可变对象创建不可变对象?

问题描述

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

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

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

我知道 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());
    }
}

标签: javaoopimmutabilityaccess-modifiers

解决方案



推荐阅读