2012-03-21 3 views
0

개체 수는자바 : 열거의 값을 매핑하는 프로그램 아래의 그림과 같이 내가 열거를

public class Test { 
    public static void main(String args[]) { 
     Vector v = new Vector(); 
     v.add("Three"); 
     v.add("Four"); 
     v.add("One"); 
     v.add("Two"); 
     Enumeration e = v.elements(); 

     load(e) ; // **Passing the Enumeration .** 

    } 

} 

또한

public Student 
{ 
String one ; 
String two ; 
String three ; 
String four ; 
} 

내가 전달해야 학생 개체가 다음에 나타내는 다른 메소드의 열거.

private Data load(Enumeration rs) 
{ 
Student stud = new Student(); 
while(rs.hasMoreElements()) 
{ 
// Is it possible to set the Values for the Student Object with appropiate values I mean as shown below 
stud.one = One Value of Vector here 
stud.two = Two Value of Vector here 
stud.three = Three Value of Vector here 
stud.four = Four Value of Vector here 

} 
} 

의견을 보내주십시오. 감사합니다.

+1

왜 '벡터'와 '열거'를 사용하고 있습니까? 'ArrayList'와'Collection'은 작업하기가 훨씬 쉽습니다. –

답변

2

확실히. 메서드 documented here을 사용하여 원하는 값을 얻을 수 있습니다. Vector를 사용하는 특별한 이유가 있습니까? List 구현 중 일부는 더 좋을 수도 있습니다.

0

열거 형에는 "첫 번째 값", "두 번째 값"등의 개념이 없습니다. 현재 값만 있습니다. 당신은 다양한 방법으로이 문제를 해결할 수 :

  1. 쉬운 방법은 - List에 같이 작동하도록 쉽게 무언가로 변환.

    List<String> inputs = Collections.list(rs); 
    stud.one = inputs.get(0); 
    stud.two = inputs.get(1); 
    // etc. 
    
  2. 직접 위치를 추적하십시오.

    for(int i = 0; i <= 4 && rs.hasNext(); ++i) { 
        // Could use a switch statement here 
        if(i == 0) { 
         stud.one = rs.nextElement(); 
        } else if(i == 1) { 
         stud.two = rs.nextElement(); 
        } else { 
         // etc. 
        } 
    } 
    

정말 다음과 같은 이유로, 이러한 것들 중 하나를하지 않는 것이 좋습니다 :

  • 특정 순서대로 매개 변수를 원한다면, 그냥 그런 식으로 그들을 전달합니다. 그것은 훨씬 쉬우 며 유지 보수도 쉽습니다 (다른 사람들이 읽을 수 있도록). 이 자바 1.2 이후 IteratorIterable로 대체 된 이후

    void example(String one, String two, String three, String four) { 
        Student student = new Student(); 
        student.one = one; 
        student.two = two; 
        // etc. 
    } 
    
  • 당신은 모든 Enumeration을 사용할 수 없습니다. ArrayListCollection을 참조하십시오.

관련 문제