2013-07-12 1 views
4

에서 객체의 변수의 값을 설정하는 방법 :있는 내가해야 내가 할당 일하고 ArrayList에

  1. 는 다음과 같은 속성/변수 직원 클래스를 만듭니다 이름을 나이 부서

  2. 직원 목록이 포함 된 Department라는 클래스를 만듭니다.

    a. 부서 클래스는 직원을 연령별로 반환하는 방법을 갖습니다.

    b.

    • "회계"
    • "마케팅"
    • "인적 자원"
    • "정보 시스템"

I :학과의 값은 다음 중 하나 일 수있다 2b를 완성하는 방법을 찾아내는 데 가장 힘든 시간을 보내고 있습니다. 당신은 단지 지정된 값을 사용하도록 제한합니다 같은 목적을 위해 열거를 사용할 수 있습니다

import java.util.*; 

public class Employee { 
String name; 
int age; 
String department; 

Employee (String name, int age, String department) { 
    this.name = name; 
    this.age = age; 
    this.department = department; 

} 
int getAge() { 
    return age; 
} 
} 

class Department { 
public static void main(String[] args) { 
    List<Employee>empList = new ArrayList<Employee>(); 

    Collections.sort (empList, new Comparator<Employee>() { 
     public int compare (Employee e1, Employee e2) { 
      return new Integer (e1.getAge()).compareTo(e2.getAge()); 
     } 
    }); 
    } 
} 
+13

'에 대한 좋은 자습서 읽기 b. 부서의 가치는 "회계" "마케팅" "인사" "정보 시스템" "- : //docs.oracle.com/javase/tutorial/java/javaOO/enum.html) 유형이 아닌 String입니다. 이것은 Java가이 변수 또는 매개 변수에 대해 특정 유형의 항목 만 허용하게합니다. –

+1

자세한 내용은 [Enum Types] (http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html) – MadProgrammer

+0

을 확인하십시오. 다음 번에 귀하의 질문과 관련된 정보 만 제공하십시오. 코드 전체와 과제 설명의 대부분은 귀하의 질문과 관련이 없습니다. –

답변

15

: 여기 는 내가 지금까지 가지고있는 것입니다. 아드리안 의해 제안

public enum Department { 

    Accounting, Marketting, Human_Resources, Information_Systems 

} 

당신 Employee이 클래스는 지금

public class Employee { 
    String name; 
    int age; 
    Department department; 

    Employee(String name, int age, Department department) { 
     this.name = name; 
     this.age = age; 
     this.department = department; 

    } 

    int getAge() { 
     return age; 
    } 
} 

수 있습니다 및 직원을 작성하는 동안, 당신은

Employee employee = new Employee("Prasad", 47, Department.Information_Systems); 

편집을 사용할 수 있습니다 다음과 같이 은 Department 열거 선언 Shum은 물론이기 때문에 좋은 제안.

  • 열거 형은 Java 규칙에 따라 대문자로 선언해야하는 이유는 상수입니다.
  • 하지만 우리는 enum 생성자를 생성하고 읽을 수있는 정보를 전달할 수 있도록 열거 형의 대문자 표현을 보길 원치 않습니다.
  • toString() 메서드를 포함하도록 enum을 수정하고 문자열 인수를 취하는 constructor을 사용합니다.

    public enum Department { 
    
        ACCOUNTING("Accounting"), MARKETTING("Marketting"), HUMAN_RESOURCES(
         "Human Resources"), INFORMATION_SYSTEMS("Information Systems"); 
    
        private String deptName; 
    
        Department(String deptName) { 
         this.deptName = deptName; 
        } 
    
        @Override 
        public String toString() { 
        return this.deptName; 
        } 
    
    } 
    

그래서 우리는 다음과 같이 Employee 객체를 생성하고 사용하는 경우

Employee employee = new Employee("Prasad Kharkar", 47, Department.INFORMATION_SYSTEMS); 
System.out.println(employee.getDepartment()); 
그것이라고 toString() 메소드에 의해 반환 될 때

우리는 Information Systems로 읽을 수있는 문자열 표현을 얻을 것이다 암시 적으로 System.out.println() 진술. Enumerations

+0

오우 와우 ... 그 말이 더 합리적입니다. 정말 고맙습니다! – ythompson

+1

이것은이 문제에 대한 우아한 해결책입니다. – Chase

+1

그냥 자바 협약에서, enum의 이름은 상수를 따라야한다. 즉, 값은 'ACCOUNTING, MARKETING, HUMAN_RESOURCES, INFORMATION_SYSTEMS'이어야한다. 원하는 경우 사람이 읽을 수있는 이름을 제공하기위한 enum 메소드를 추가 할 수 있습니다. –