다음과 같은 제거 된 Java 코드가 있습니다.
// Class, in it's own file
import java.util.*;
public class Superclass {
protected List<Subclass> instances = new ArrayList<>();
public class Subclass extends Superclass {
private int someField;
public Subclass(int someValue) {
this.someField = someValue;
updateSuperclass();
}
private void updateSuperclass() {
super.instances.add(this);
}
}
}
// Implementation, somewhere else, everything has been imported properly
Superclass big = new Superclass();
Subclass little1 = big.new Subclass(1);
Subclass little2 = big.new Subclass(2);
Subclass little3 = big.new Subclass(3);
Superclass
모든 Subclass
es로 뭔가를 수행 하는 방법을 구현하고 싶습니다 . a Subclass
가 생성 되면에서 목록에 자신을 추가 해야Superclass
하지만 에서 목록 을 반복하려고 할 때마다 Superclass
크기가 1이라고 표시됩니다 . 목록 의 첫 번째 요소 ( instances.get(0)
)는 모든 적절한 정보가 포함 된 문자열을 뱉어냅니다. , 그러나 객체 형태가 아니며 개별적으로는 아닙니다. add
목록에 갈 때마다 String 형식의 첫 번째 (또는 0) 요소에 추가되는 것과 같습니다.
내가 유지할 수 있도록 어떻게이 문제를 해결할 수 ArrayList
의 Subclass
부터 나중에 루프 ES 및 실행 방법을? 나는 확실히 Java의 초보자이며 내 경우에 도움이되지 않습니다.
필요한 모든 것이 카운트라면 부모 클래스의 생성자에서 업데이트되는 정적 값을 제안합니다.
private static int instanceCount = 0;
public Constructor() {
instanceCount++;
}
목록의 모든 인스턴스가 절대적으로 필요하여 무언가를 할 수 있다면 디자인을 강력하게 재고하는 것이 좋습니다.
프로세스를 실행할 개체 목록을 유지 관리 할 수있는 유틸리티 클래스를 언제든지 만들 수 있습니다. 그런 식으로 "객체 지향적"입니다. 모든 작업을 포함하는 하나의 클래스를 만든 다음 데이터 값만 포함하는 더 간단한 Bean 클래스를 만들 수도 있습니다.
그러나 주장한다면 여전히 동일한 기술을 사용할 수 있습니다.
private static List<SuperClass> list = new LinkedList<SuperClass>;
public Constructor() {
list.add(this)
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다