【发布时间】:2020-02-09 11:42:24
【问题描述】:
下面是两段代码,我知道它没有按预期工作。
Date 实例在创建后不应更改,但因为getDate 方法返回一个数组(引用),所以它可以在我提供的代码的第二部分中使用int[] dateValue = date.getDate (); 进行更改。
我想我有点想多了,需要用新的眼光来看待这个问题。
我只是应该使用int y, int m, int d 而不是int[] ymd 构建Date-class,还是可以修改返回方法和/或向Date 或Problem2 添加更多方法?
关于如何以最佳或最简单的方式解决此问题的任何想法? Problem2 类应该两次打印出相同的内容,和/或 Date-instance 不应更改!
至于现在,我什至不知道我应该往哪个方向思考。
public class Date
{
private int[] ymd = new int[3];
public Date (int year, int month, int day)
{
ymd[0] = year;
ymd[1] = month;
ymd[2] = day;
}
public int[] getDate ()
{
return ymd;
}
public void printDate ()
{
System.out.println (ymd[0] + "-" + ymd[1] + "-" + ymd[2]);
}
}
public class Problem2
{
public static void main (String[] args)
{
Date date = new Date (2019, 6, 15);
date.printDate ();
int[] dateValue = date.getDate ();
dateValue[2] = 38;
date.printDate ();
}
}
目前,Problem2 打印出来:
2019-6-15
2019-6-38
当“固定”时,它应该两次打印相同的日期。
【问题讨论】:
-
您可以返回数组的克隆。
标签: java arrays class instance return-value