이 코드는 다른 사람이 작성한 것으로 이해하기 힘듭니다. 논리이 코드 뒤에 나오는 설명 - Java
그것은 잘 작동하고 올바른 결과를 생성하지만 난 어떻게 작동하는지 이해할 수 없었다됩니다package you;
import clowns.Clown;
import clowns.Volkswagen;
public class You {
static int counter = 0;
static Volkswagen vw = new Volkswagen();
public static void main(String args[]) {
vw.add(new RecursiveClown());
vw.done();
}
static class RecursiveClown extends Clown {
public int hashCode() {
if (++counter < 20) {
vw.add(new RecursiveClown());
}
return super.hashCode();
}
}
}
분명히 RecursiveClown
가도 그 hashcode()
기능
그럼 어떻게 어디서든 호출되지 않는 것을 이해할 수 없었다 그것을 작동 시키면 RecursiveClown
개체를 추가하십시오.
또한
super.hashCode();
을 반환 왜 다른 클래스는 위 코드에서 참조되었다가있다. 이 두 클래스의
package clowns;
import java.util.HashSet;
import java.util.Set;
public class Volkswagen {
private static final int CAPACITY = 5;
private Set<Clown> clowns = new HashSet<Clown>();
public synchronized void add(Clown clown) {
if (clowns.size() >= CAPACITY) {
throw new IllegalStateException("I'm full");
} else {
clowns.add(clown);
}
}
public synchronized void done() {
if (clowns.size() == 20) {
// The goal is to reach this line
System.out.println("I'm a Volkswagen with 20 clowns!");
}
}
}
출력은 다음과 같습니다 I'm a Volkswagen with 20 clowns!
하지만 '폭스 바겐'의 add()
방법에
clowns.size()
를 인쇄 할 때마다 항상이
clowns.size() == 20
를 비교 오는 방법 다음 0을 반환
이 사실이라고 평가합니까?