어떤 사람이 나에게 설명 할 수 있습니까 개인 생성자 캡처 관용구 예를 들어 우리가 실제로 필요/이런 종류의 디자인을 필요로 지적?"개인 생성자 캡처"관용구의 Java 예제는 무엇입니까?
9
A
답변
12
건설 중 임시 값을 캡처하는 것이 목표입니다.
예
는 Java Puzzlers의 솔루션 (53)에 나와있다 :이 경우public class MyThing extends Thing {
private final int arg;
public MyThing() {
this(SomeOtherClass.func());
}
private MyThing(int i) {
super(i);
arg = i;
}
}
, 우리는 캡처하고 우리는 슈퍼 클래스 생성자에 전달하고자하는 매개 변수를 저장할. 그렇게하기 위해서 우리는 private helper 생성자를 생성합니다. 생성자는 public 생성자가 호출합니다.
1
설명은 예 : Java Concurrency In Practice 4 장 4.3.5 절에 설명되어 있습니다.
는public class SafePoint {
private int x, y;
private SafePoint(int[] a) {
this(a[0], a[1]);
}
public SafePoint(SafePoint p) {
this(p.get());
}
public SafePoint(int x, int y) {
this.x = x;
this.y = y;
}
public synchronized int[] get() {
return new int[] { x, y };
}
public synchronized void set(int x, int y) {
this.x = x;
this.y = y;
}
}
개인 생성자는 복사 생성자이 (p.x, p.y)로 구현 된 경우 발생할 수있는 경쟁 조건을 방지하기 위해 존재한다.
public SafePoint(SafePoint p) {
this(p.x, p.y);
}
지금 스레드 A가 SafePoint 페이지에 대한 액세스를 가지고있다 가정 실행 : 당신이 개인 생성자가 없었어요 당신은 다음과 같은 방법으로 복사 생성자를 구현하는 경우
은 무슨 뜻이며, 복사 생성자의 this (px, py) 명령과 위의 불행한 타이밍에서 SafePoint에 대한 액세스 권한이있는 다른 스레드 B도 pp 개체의 setter set (int x, int y)을 실행합니다. 복사본 생성자 잠금 적절한 않고 직접 P의 X 및 Y 인스턴스 변수를 액세스하기 때문에 그것은 객체 P의 불일치 상태를 볼 수 있었다.
여기서 개인 생성자 P의 변수가 액세스 될 때 X 및 Y 그래서 당신은 동기화 객체 P의 일관된 상태를 표시 보장 게터 통해.관련 문제
- 1. java 열거 자의 개인 생성자
- 2. 개인 생성자 및 상속 (Java)
- 3. 개인 생성자
- 4. 개인 생성자 또는 개인 함수?
- 5. 개인 생성자 및 최종
- 6. 클래스의 개인 생성자 사용
- 7. 개인 클래스의 생성자 정의
- 8. 개인 생성자 및 공용 매개 변수 생성자
- 9. Java 생성자
- 10. 개인 속성을 사용하여 복사 생성자
- 11. Java 생성자?
- 12. Java 생성자
- 13. 슈퍼 클래스의 java 생성자
- 14. NSWindowRestoration 예제는 무엇입니까?
- 15. 생성자
- 16. java linked list 문자열 생성자 및 생성자
- 17. GWT 구현 직렬화 - 개인 기본 - 생성자
- 18. 생성자 및 Java
- 19. Java PriorityQueue (PriorityQueue) 생성자
- 20. 스캐너 (Java)의 생성자
- 21. Java 클래스 및 생성자
- 22. Java enum 생성자 오류
- 23. 개인 복사 생성자 및 할당 생성자가있는 객체를 사용하는 방법은 무엇입니까?
- 24. NSSet의 objectsPassingTest 함수의 예제는 무엇입니까?
- 25. 배열을 가져 오는 Java 생성자?
- 26. Java 공용 API에 개인 메소드가있는 이유는 무엇입니까?
- 27. 어떤 Java 생성자 호출 유형입니까?
- 28. java linked list 복사 생성자
- 29. Java 객체 클래스, 생성자 체인
- 30. Java Subclass 생성자 값 지정
생성자가 실행되고 아직 실행이 완료되지 않은 상태에서 객체의 상태를 캡처하는 것이 좋습니다. 객체가 일관성없는 상태 일 수 있습니다. – Inquisitive
Downvoter : 의견이 있으십니까? –
@Subhra : 당신이 무엇을 요구하는지 모르겠습니다. 어떤 개체가 일관성없는 상태 일 수 있습니까? –