2014-04-07 4 views
0

나는이 추상 클래스를 확장하는 payCust라는 고객 클래스와 또 다른 클래스를 가지고있다. 고객 목록을 초기화하는 다른 클라이언트 클래스가 있습니다. 다음과 같이 List<Customer> custList = new ArrayList<>();java - 부모 목록에서 자식 편집

고객 클래스는 생성자가 :

public PayCust(String _name, String _email, String _accountType, String _custMag) { 
     super(_name, _email, _custMag); 
     this.accountType = _accountType; 
    } 

모든 변수가 공공 get 및 set 메소드가 :

public Customer(String name, String email, String mag) { 
     this.CusEmail = email; 
     this.CusName = name; 
     this.magazine = mag; 
    } 

payCust는 다음과 같은 생성자를 가지고있다. 예 :

public void setName(String name) { 
      this.CusName = name; 
     } 
public String getName() { 
     return this.CusName; 
    } 

내 질문은 custList 있던 경우 PayCust가 추가 점이다. 해당 목록에서 고객의 accountType을 편집하려면 어떻게해야합니까? 참고 : 이메일을 모든 고객에게 고유

답변

2

당신은 인스턴스 유형을 확인해야합니다 ArrayList 내에서 객체를 가져 와서 사용을 위해 캐스트합니다. 예를 들어이 같은

뭔가 : 당신이 목록에서 고객의 여러 서브 클래스가있는 경우

for (Customer c : custList){ 
    if(c instanceof PayCust){ 
     PayCust pc = (PayCust) c; 
     pc.getAccountType(); 
    } 
} 
+0

이 더 나은 대답이다. – williamg

+0

@williamg 감사합니다. – Pindo

0

당신은 PayCust에 캐스팅해야 할 것이다 (당신이 있다는 사실을 알고 가정 할 PayCust) :

PayCust example = (PayCust) custList.get(0); 
String accountType = example.getAccountType(); 
...