【发布时间】:2021-12-28 17:52:08
【问题描述】:
我是 Java 编程的新手,我目前正在做一个作业,我应该更改一些代码以允许在另一个实例中引用类实例,但之后不允许对该值进行任何更改它已被初始化。还有一个名为“Date”的类我根本不允许更改,所以我不会在这里发布。
这是我需要更改的课程。在此我将写出我的测试代码来展示 ToDo 是如何工作的。
public class ToDo
{
private String what;
private Date when;
public ToDo (String what,int year,int month,int day)
{
this.what = what;
when = new Date (year, month, day);
}
public String getWhat () { return what; }
public Date getWhen () { return when; }
public String toString ()
{
return "Todo: " + what + "; date: " + when.toString ();
}
}
测试代码:
public class hej1{
public static void main (String[] args){
ToDo important = new ToDo ("Tentamen", 2022, 1, 10);
System.out.println (important);
Date d = important.getWhen ();
d.setMonth (5);
d.setDay (35);
System.out.println (important);
}
}
Output of test 正如您在测试运行中看到的那样,我目前被允许在 ToDo 类中更改日期类。我想更改这些值是非法的,并且只允许在 ToDo 类中引用 Date 值。
我没有成功的尝试是:
从 Date-Class 中删除 setter(我不允许这样做)。
试图让 Date 成为最终的,这样我就不能在之后更改它的值(没有让它工作)。
现在我被困住了,有什么想法或解决方案可以让我平静下来吗?
【问题讨论】:
-
getWhen()可以返回when的副本吗? -
也更喜欢最新的 java.time.LocalDate 而不是旧的 java.util.Date
标签: java reference constants instance