private E_Color Color {get; set;}
private int Number
{
get { return Number; }
set
{
if ((value >= 2) && (value <= 14))
Number = value;
}
}
public Card(int color, int num)
{
Color = (E_Color)color;
Number = num;
}
我很确定问题是在Number中的设置,但我不知道如何使得像颜色中的那个得到但是设置它因此它只能是2-14之间的数字。 当我在编译中运行它但打印&#34;由于StackOverflowException,进程终止。&#34;。 当我写了一行,每次设置运行时都会打印出来的东西,它会一遍又一遍地打印出来,直到它抛出错误。
答案 0 :(得分:1)
啊你又来了。我以为你明白了什么是错的(reference)。您无法在其内部的getter或setter中调用属性名称。它会导致无限循环。你需要一个支持领域。
问题出在您的财产中。您将返回属性本身,这会导致无限循环(Arrays.stream(dataSet.getData()).forEach(System.out::println);
)。
将其更改为:
Stackoverflow
在您的情况下,您需要一个支持字段,因为在将值设置为private int num = 0;
private int Number
{
get { return num; }
set
{
if ((value >= 2) && (value <= 14))
num = value;
}
}
之前,您正在进行一些检查。
你基本上在做什么(当引用它里面的属性名称&#39; s getter或setter)是这样的:
num