java.lang.UnsupportedOperationException

개발공부기록하기·2024년 5월 7일

java

목록 보기
12/16

수강생 등록 관련 코드 작성 하는 도중
java.lang.UnsupportedOperationException 발생.

    private static void createStudent() {
        int count = 1;
        int input;
        System.out.println("\n수강생을 등록합니다...");
        System.out.print("수강생 이름 입력: ");

        String studentName = sc.next();
        // 기능 구현 (필수 과목, 선택 과목)
        String[] mandatory =new String[3];
        String[] choice =new String[2];
        Student student = new Student(sequence(INDEX_TYPE_STUDENT), studentName);
        String studentId = student.getStudentId();

        for (int i = 0 ; i < mandatory.length ; i++) {
            System.out.println("==================================");
            System.out.println("필수 과목 3과목을 입력해 주세요..."+count +" 번째");
            System.out.println("1. Java");
            System.out.println("2. 객체지향");
            System.out.println("3. Spring");
            System.out.println("4. JPA");
            System.out.println("5. MySQL");

            input = sc.nextInt();
            switch (input) {
                case 1 :
                    mandatory[i] = "Java";
                    subject = new Subject(sequence(INDEX_TYPE_SUBJECT), mandatory[i],SUBJECT_TYPE_MANDATORY,studentId);
                    subjectStore.add(subject);
                    break;
                case 2 :
                    mandatory[i] = "객체지향";
                    subject = new Subject(sequence(INDEX_TYPE_SUBJECT), mandatory[i],SUBJECT_TYPE_MANDATORY,studentId);
                    subjectStore.add(subject);
                    break;
                case 3 :
                    mandatory[i] = "Spring";
                    subject = new Subject(sequence(INDEX_TYPE_SUBJECT), mandatory[i],SUBJECT_TYPE_MANDATORY,studentId);
                    subjectStore.add(subject);
                    break;
                case 4 :
                    mandatory[i] = "JPA";
                    subject = new Subject(sequence(INDEX_TYPE_SUBJECT), mandatory[i],SUBJECT_TYPE_MANDATORY,studentId);
                   subjectStore.add(subject);
                    break;
                case 5 :
                    mandatory[i] = "MySQL";
                    subject = new Subject(sequence(INDEX_TYPE_SUBJECT), mandatory[i],SUBJECT_TYPE_MANDATORY,studentId);
                    subjectStore.add(subject);
                    break;
                default:
                    System.out.println("잘못 입력하셨습니다");
                    break;
            }
            count++;
        }
        count = 1;
        for (int i = 0 ; i < choice.length ; i++) {
            System.out.println("==================================");
            System.out.println("선택 과목 2과목을 입력해 주세요..." + count + " 번째");
            System.out.println("1. 디자인 패턴");
            System.out.println("2. Spring Security");
            System.out.println("3. Redis");
            System.out.println("4. MongoDB");
            input = sc.nextInt();

            switch (input) {
                case 1:
                    choice[i] = "디자인 패턴";
                    subject = new Subject(sequence(INDEX_TYPE_SUBJECT), choice[i],SUBJECT_TYPE_CHOICE,studentId);
                    subjectStore.add(subject);
                    break;
                case 2:
                    choice[i] = "Spring Security";
                    subject = new Subject(sequence(INDEX_TYPE_SUBJECT), choice[i],SUBJECT_TYPE_CHOICE,studentId);
                    subjectStore.add(subject);
                    break;
                case 3:
                    choice[i] = "Redis";
                    subject = new Subject(sequence(INDEX_TYPE_SUBJECT), choice[i],SUBJECT_TYPE_CHOICE,studentId);
                    subjectStore.add(subject);
                    break;
                case 4:
                    choice[i] = "MongoDB";
                    subject = new Subject(sequence(INDEX_TYPE_SUBJECT), choice[i],SUBJECT_TYPE_CHOICE,studentId);
                    subjectStore.add(subject);
                    break;
                default:
                    System.out.println("잘못 입력하셨습니다");
                    break;
            }
            count++;
        }
        studentStore.add(student);

        System.out.println(student.getStudentName()+","+student.getStudentId());

        for(Subject s : subjectStore){
            System.out.println(s.getSubjectName()+','+s.getSubjectId()+','+s.getSubjectType());
        }
        System.out.println("수강생 등록 성공!\n");
    }

해당 Exception 번역기로 확인 해보니깐. 지원하지 않는 작업 예외라고 한다.

어떤 부분에서 지원하지 않는 작업인지 몰라 튜터님에게 자문을 구해봤는데
List에서 List.Of를 선언하면 add를 지원하지 않는다고 한다.

private static void setInitData() {
    studentStore = new ArrayList<>();
    subjectStore = List.of(
            new Subject(
                    sequence(INDEX_TYPE_SUBJECT),
                    "Java",
                    SUBJECT_TYPE_MANDATORY,
                    INDEX_TYPE_STUDENT
            ),
            new Subject(
                    sequence(INDEX_TYPE_SUBJECT),
                    "객체지향",
                    SUBJECT_TYPE_MANDATORY,
                    INDEX_TYPE_STUDENT
            ),
            new Subject(
                    sequence(INDEX_TYPE_SUBJECT),
                    "Spring",
                    SUBJECT_TYPE_MANDATORY,
                    INDEX_TYPE_STUDENT
            ),
            new Subject(
                    sequence(INDEX_TYPE_SUBJECT),
                    "JPA",
                    SUBJECT_TYPE_MANDATORY,
                    INDEX_TYPE_STUDENT
            ),
            new Subject(
                    sequence(INDEX_TYPE_SUBJECT),
                    "MySQL",
                    SUBJECT_TYPE_MANDATORY,
                    INDEX_TYPE_STUDENT
            ),
            new Subject(
                    sequence(INDEX_TYPE_SUBJECT),
                    "디자인 패턴",
                    SUBJECT_TYPE_CHOICE,
                    INDEX_TYPE_STUDENT
            ),
            new Subject(
                    sequence(INDEX_TYPE_SUBJECT),
                    "Spring Security",
                    SUBJECT_TYPE_CHOICE,
                    INDEX_TYPE_STUDENT
            ),
            new Subject(
                    sequence(INDEX_TYPE_SUBJECT),
                    "Redis",
                    SUBJECT_TYPE_CHOICE,
                    INDEX_TYPE_STUDENT
            ),
            new Subject(
                    sequence(INDEX_TYPE_SUBJECT),
                    "MongoDB",
                    SUBJECT_TYPE_CHOICE,
                    INDEX_TYPE_STUDENT
            ));
    scoreStore = new ArrayList<>();
}

해당 문제를 해결 할려면 해당 구문을 지우거나 new ArrayList<>()로 생성하면 해결 된다.

참고 문헌 : https://yeonyeon.tistory.com/161

0개의 댓글