inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

jarchive님의 게시글

jarchive jarchive

@freejia

수강평 작성수
10
평균평점
5.0

게시글 7

질문&답변

18:06 로그인을 하려도 리다이렉트가 안되는데 이유가 있나요?

안녕하세요 양치잘하기님. 체크필터 코드에서 httpResponse.sendRedirect("/login?RedirectURL=" +requestURI); 이 부분을 아래처럼 수정해야 할 것 같습니다. 감사합니다. httpResponse.sendRedirect("/login?redirectURL=" + requestURI);

좋아요수
1
댓글수
3
조회수
530

질문&답변

안녕하세요. enum 질문있습니다.

안녕하세요. 질문을 3 부분으로 나누어 답변을 적어보았습니다. (답변 작성 에디터에서는 개행이 여러번 안되서 가독성이 좀 떨어지네요.) 1) Member member = new Member(1L, “이유진”, Grade.VIP); System.out.println(member.getGrade()); 로 출력한다면 1이라는 상수가 나와야 할 것 같다고 추정했습니다. 하지만 결과는 VIP가 나왔습니다. 답변 : Member member = new Member(1L, “이유진”, Grade.VIP); 여기서 member.getGrade() 메소드는 Grade.VIP의 주소값을 반환합니다. member의 grade 필드는 Grade 클래스의 VIP라는 필드의 주소값 을 알고 있는 것 입니다. 그런데 Grade의 필드 VIP는 그 자체로서 Grade 객체입니다. Grade가 Enum 이라는 열거형 객체이기 때문입니다. 주소를 따라가서 객체 이름을 출력하므로 VIP 가 출력됩니다. Enum 열거형 클래스 Grade 가 선언된 순간, Grade 클래스를 상수처럼 사용할 수 있습니다. Grade.VIP의 주소값은 컴파일타임에 정해지는 상수 객체이기 때문에 프로그램이 동작하는 동안 변할 수 없고 똑같습니다. 다시 말하면, Grade의 필드 VIP는 public static final 필드이면서 동시에 Grade객체입니다. 2) System.out.println(member,getGrade() == 1);은 int와 비교 시 에러가 난다는 문구가 나왔습니다. 답변: 맞습니다. 자료형이 다르니까 비교할 수 없어서 컴파일 에러가 발생합니다. 왜냐하면 1은 int라는 기본 자료형(primitive type)이고, member.getGrade()는 enum 참조형(reference type) 즉, 객체형입니다. 3) equals로 Grade.VIP와 비교 했을 경우만 true가 나오고, equals(“VIP”)는 false, ==를 통한 비교는 에러가 나게됩니다. 답변 : equals 는 메소드입니다. == 는 연산자 입니다. 메소드는 ‘값’을 비교합니다. 연산자는 대상의 ‘주소값’을 비교합니다. call by value와 call by reference 차이를 떠올리시면 될 것 같습니다. member.getGrade() 를 equals(Grade.VIP) 로 비교하면 true가 나옵니다. 둘다 주소값을 알고 있고 둘 다 객체가 상수객체이므로 주소가 같습니다. 모든 Grade 타입의 객체의 VIP는 같은 주소값을 가집니다. 그래서 Grade.VIP와 비교하면 true가 나옵니다. member.getGrade() 를 equals(“VIP”) 로 비교하면 false가 나옵니다. equals 메소드는 String객체 “VIP”와 컴파일 타임에 주소값이 정해진 객체 Grade.VIP 은 서로 다르기 때문입니다. member.getGrade() == “VIP” 는 에러가 납니다. member.getGrade() 는 컴파일 타임에 힙 영역에 주소값이 *정해진* 객체 Grade.VIP의 주소값을 참조합니다. “VIP” 는 동적으로 생성한 객체의 주소값입니다. (프로그램 실행 도중 주소가 정해짐) 이미 할당된 주소값과 동적으로 생성하는 주소값은 비교할 수 없기 때문에 컴파일 에러가 납니다. 적고 보니 엄청 길어졌습니다... 조금이나마 도움이 되었으면 좋겠습니다. 감사합니다.

좋아요수
0
댓글수
2
조회수
479

질문&답변

안녕하세요. enum 질문있습니다.

안녕하세요. enum은 선언된 순서에 따라 0, 1, 2 .. 의 순차적으로 증가된 값을 가집니다. 예시를 들자면, enum Season{ spring, summer, fall, winter } spring == 0 summer == 1 fall ==2 winter ==3 따라서 수업 시간에 사용한 enum Grade안에 선언한 BASIC라는 코드는 0값을 가지는 상수입니다. VIP라는 코드는 1값을 가지는 상수입니다.

좋아요수
0
댓글수
2
조회수
479

질문&답변

sanitizeHtml을 쓰면....

저 모듈이 설치 됬는지 확인해보시면 어떨까요

좋아요수
0
댓글수
1
조회수
299