2013-07-15 2 views
-3

java로 신규입니다. 모든 인스턴스에 대해 클래스의 변수 하나를 확인하고 싶습니다. 이 변수가 모든 인스턴스에서 특정 값을 가지지 않으면 다음 단계를 수행합니다. 그러나 나는 이것을 할 수 없다. 예 : 내 코드에서 Proposition 클래스의 모든 인스턴스의 유형이 "UserModelMatch"가 아닌 경우 "계속"을 수행합니다.클래스의 모든 인스턴스에서 변수 값 찾기


public class Propositions extends ArrayList<Proposition>{ 
    } 

Proposition proposition=new Proposition(); 

     for (Proposition proposition:Proposition) 

      if (!proposition.getType().equals("UserModelMatch") { 
        .....do next 
      } 
하지만 하나 개의 제안이 코드를 확인하고 그것이 "다음에 수행"할 유형 "UserModelNoMatch" 를 포함하지 않는 경우. 하지만 먼저 모든 명제를 "명제"에있는 모든 명제를 확인한 다음 "UserModelMatch"가 있으면 다음 단계로 진행합니다.

+0

자바에는 '모든 인스턴스'에 대한 개념이 없습니다. 클래스의 모든 인스턴스 목록을 유지해야하는 경우 해당 목록을 직접 보관해야합니다. – bmargulies

+0

그리고 '명제'의 모든 사례는 어디에 있습니까? – m0skit0

답변

2

당신이 의사 코드에 필요한 알고리즘은 :

boolean areAllEquals = true 
for each proposition do 
    if type != "the value" then 
     areAllEquals = false 
     break 
    endif 
endfor 
if areAllEquals then 
    // all types are equals 
else 
    // there is at least two different types 
endif 

break 문은 부모 루프 반복을 중지합니다.

+0

고마워, 대답있어, 작동 해. – user2583693

1

일반적으로 찾고있는 인스턴스에 대한 참조를 유지 한 다음 반복하고 멤버십을 확인해야합니다. 클래스를 반복하는 것은 생각하는 것처럼 작동하지 않습니다.

또한 깨진 코드를 수정해야합니다.

Proposition proposition=new proposition(); 

대문자 사용 중요 사항. 명제! 명제

for (Proposition proposition:Proposition) 

방금 ​​만든 그림자 변수를 사용하지 마십시오. for (Proposition p: proposition)은 아마 당신이 쓰려고 의도 한 것일 것입니다.하지만 여러분은 반복적으로 반복 할 수있는 것에 관해서는 일반적으로 혼란 스럽다고 생각합니다. 유형의 이름뿐만 아니라 반복 할 인스턴스의 목록이 필요합니다.

마지막으로 리플렉션을 사용하는 대신 instanceof 키워드를 사용하십시오.

관련 문제