묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
확장 함수의 오버라이드에 대해서 궁금한 점이 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 예로 들어주신 Train, Srt 클래스에 존재하는 isExpensive() 확장 함수에 대해서 의문이 생겼습니다.코틀린의 경우 오버라이드의 경우 override 키워드를 사용해서 정의를 한다고 강의에서 배웠는데요, Srt의 isExpensive() 함수를 함수 오버라이딩이라고 볼 수 있는지 궁금합니다.궁금해서 찾아본 결과 오버라이딩의 경우 상속 관계가 핵심이고, 상위 클래스의 함수를 하위 클래스가 재정의 하는 것이라고 표현할 수 있을 것 같습니다.Train과 Srt의 확장 함수는 각 클래스에 정의가 되어 있긴 하지만, 내부에서도 상속 관계가 되어 오버라이딩에 대한 바인딩이 처리되어 있을까? 하는 의문이 들었습니다.확장 함수의 오버라이딩이 어떻게 진행되는지 궁금합니다..!
-
해결됨스프링 핵심 원리 - 기본편
수동 빈 등록 VS 자동 빈 등록
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]수동 빈 등록 VS 자동 빈 등록을 테스트 하던 과정 속에의문점이 생겨서 질문 드립니다!AutoAppConfig를 설정 정보로 스프링 컨테이너에 넘기면1. @CompoentScan으로 @Compoent가 붙은스프링 빈들이 컨테이너에 등록 생성자 주입을 하고 있으니DI가 필요한 클래스들은 스프링 빈 등록과 동시에 DI이때 MemoryMemberRepository는memoryMemberRepository라는 이름으로 빈 등록2. AutoAppConfig에서 팩토리 메서드 방식으로수동 스프링 빈 등록 과정 진행 이때 이름을 memberRepository2 , memberRepositorymemoryMemberRepository이렇게 3번 메서드 이름을 바꿔서 진행했습니다.처음 memberRepository2로 실행했을 때는expected single matching bean but found 2: memoryMemberRepository, memberRepository2이런 에러가 발생했습니다.memberRepository와 memoryMemberRepository는에러 발생 x 수동 설정에서 생성한 객체가 사용된다는우선순위 테스트까지 완료memoryMemberRepository는 오버라이딩 된 상태memberRepository는 2개의 MemoryMemberRepository의 인스턴스가 있는 상태테스트 결과에 생기는 의문점은 자동 빈 등록 vs 자동 빈 등록에서는 이름이 같으면 에러가 발생하는데메서드 이름을 동일하게 하면 오버라이딩 된 상태로 스프링 빈에 등록 메서드 이름을 아예 다르게 하면 에러 발생이름을 부모 타입으로 캐멀 케이스를 지켜서 이름을 하면각각 다른 이름으로 같은 타입의 스프링 빈 생성왜 이런 결과가 나오는 걸까요?전부 오버라이딩 설정은 false로 진행했습니다.
-
해결됨스프링 핵심 원리 - 기본편
ac.getBean 관련 질문 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요.MemberService memberService = ac.getBean("memberService", MemberService.class);MemberService memberService = ac.getBean(MemberService.class);이 두 코드엔 무슨 차이가 있는 건가요?위의 코드로 AutoAppConfigTest를 실행하면 org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'memberService' available 오류가 뜨고, 아래의 코드로 같은 테스트를 실행하면 통과합니다.
-
미해결김영한의 실전 자바 - 중급 1편
예외처리시 e.printstacktrace()
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.현재 웹백엔드 개발자로 재직중입니다.최근 security prism 보안취약점 점검으로 인해 catch 부분에서 printstacktrace 를 사용하면 로그에 어디서 에러가 발생했는지 상세내역이 누적되고 이게 해커에게 노출되면 보안상 좋지않다고 해서 printstacktrace 부분을 다 제거하고 있습니다.. 근데 이렇게 다 제거하다보니 고객사에서 오류가 발생했을때 에러를 잡기가 힘들어졌습니다. 이럴땐 어떤 방법을 사용하면 에러를 찾기 쉬울까요..?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
ScannerWhileEx4 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강사님은 클래스 시작할 때 totalCost만을 변수선언하시고, 계산을 통해 대입을 하셨습니다. 그러나 전sum이라는 변수를 하나 더 선언해서 거기에다가 대입을 해서 프로그램을 짜봤는데요, 강사님이 만든 코드와 제가 만든 코드를 비교했을 때, 변수를 하나 더 선언하게 되면 비효율적인 코드가 될 수 있을까요? 밑에는 제가 짠 코드입니다.package scanner.ex; import java.util.Scanner; public class ScannerWhileEx4 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int sum = 0; int totalPrice = 0; while (true) { System.out.println("1: 상품 입력, 2: 결제, 3: 프로그램 종료" ); int num = scanner.nextInt(); scanner.nextLine(); if (num == 1) { System.out.print("상품명을 입력하세요: "); String name = scanner.nextLine(); System.out.print("상품의 가격을 입력하세요: "); int price = scanner.nextInt(); System.out.print("구매 수량을 입력하세요: "); int quantity = scanner.nextInt(); sum = price * quantity; System.out.println("상품명:" + name + " 가격:" + price + " 수량:" + quantity + " 합계:" + sum); totalPrice += sum; } else if (num == 2) { System.out.println("총 비용: " + totalPrice); totalPrice = 0; } else if (num == 3) { System.out.println("프로그램을 종료합니다."); break; } else { System.out.println("올바른 옵션을 선택해주세요."); } } } }
-
미해결김영한의 실전 자바 - 기본편
JavaMemoryMain1
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.스택구조에 관하여 질문드립니다. m2사라지고 method2(cal)로 와서 저기 사라지고 다시 System.out.println("method1 start"); int cal = m1 * 2; 이 순서로 사라지는거 아닌가요 그러고 나서 메인에 있는 method1 로 가게 된다고 이해를 했는데 그렇다면 m1보다 메인함수가 먼저 사라지고 나머지 m1에 있는 System.out.println("method1 end");이게 마지막으로 사라지는거 아닌가요?
-
미해결스프링 핵심 원리 - 기본편
싱글톤 컨테이너 섹션 중 5강
안녕하세요, 현재 섹션5 중 5강을 듣고 있습니다. 싱글톤 테스트 하던 도중 memberRepository 란 빈이 등록 되지 않았다는 오류가 발생했더라구요. 어디서 에러 생긴건지 알 수 있을까요? 아래는 제 깃입니다.https://github.com/bukwon/core
-
미해결김영한의 실전 자바 - 중급 1편
참조값에 관하여 질문 있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.제가 코드를 사진과 같이 작성하다가 궁금한점이 생겨서 질문드립니다.위 코드는 참조값이 다른 객체a,b가 메모리에 생성된거 잖아요?그리고 a객체의 참조값에 b객체의 참조값을 복사해서 대입된상태고요 그러면 여기서 a객체의 참조값이 더이상 사용되지 않으니까 가비지컬렉션이 일어나면서 사진부분에 new Address부분이 어둡게 변하는건가요?
-
미해결스프링 핵심 원리 - 기본편
Map, List로 빈 조회 시 질문
안녕하세요 AllBeanTest에서 List랑 Map으로 AnnotationConfigApplicationContext(AutoAppConfig.class, DiscountService.class); 여기서 FixDiscountPolicy랑 RateDiscountPolicy를 어떻게 스프링빈으로 등록하는지 이해가 되지않습니다. 4강 스프링 빈 조회 - 동일한 타입이 둘 이상 에서 동일한 타입의 스프링빈이 두개 이상일시 에러가 발생하고, 이를 방지하기위해 빈 이름을 지정하는걸로 나와있는데 어떻게 두개를 같이가져와 map. list에 저장 할 수 있는건가요? 그리고 rateDiscountPolicy에 @MainDiscountPolicy 어노테이션이 설정되있으면 FixDIscountpolicy대신 RateDiscountPolicy만 우선으로 가져오는걸로 이해를 햇었는데 제 생각이 어디가 잘못된건지 이해가 되지않습니다. ㅠ
-
해결됨김영한의 실전 자바 - 중급 1편
String클래스-불변객체 관련하여 질문드립니다.
안녕하세요. 항상 좋은 강의 제공해주셔서 감사드립니다.다름이 아니라 String클래스-불변객체 관련하여 질문이 있어 글을 남깁니다.String 인스턴스의 값이 변경되면 문자열 풀에서 같은 참조를 하는 다른 객체에도 영향을 끼쳐 사이드이팩트가 발생할 수 있기 때문에 불변객체로 생성되는 것은 이해하였습니다.그런데 String 의 문자열을 concat 등의 메서드 통하여 변경하는 것이 아니라 직접 변수의 값을 재정의 하게 되면 다른 참조값을 가지게 되는 것인지 궁금합니다.예를 들어String a = "hello" (참조값 = x001)String b = "hello" (참조값 = x001)a = "java" (참조값 = x002)이러한 형식이 맞는지 궁금합니다.
-
미해결김영한의 실전 자바 - 중급 1편
System.out.println()에 관하여 질문 있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. ObjectPrinter.print()는 System.out.println()의 작동방식을 설명하기 위해 만든거라고 하셨는데 System클래스가 ObjectPrinter클래스이고 println()메소드 호출한것이 print()메소드 호출한거라 생각하면 되나요?
-
미해결김영한의 실전 자바 - 기본편
오버라이딩이 우선권을 갖는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 오버라이딩 된 메서드가 항상 우선권을 가지게 설계한 이유가 무엇인가요?
-
미해결김영한의 실전 자바 - 기본편
abstract클래스의 인스턴스 생성
[질문 내용]안녕하세요! 궁금한게 있어서 질문을 남깁니다. 자식클래스로부터 인스턴스가 생성되면 부모클래스의 인스턴스도 함께 생성되는 것으로 공부하였습니다. 추상 클래스는 실체인 인스턴스가 존재하지 않는다고 하였는데,추상 클래스를 상속 받은 자식 클래스로부터 인스턴스를 생성하면 왜 추상클래스 인스턴스도 함께 생성되는 것인가요?
-
해결됨김영한의 실전 자바 - 기본편
매개변수도 메서드 호출시 인스턴스가 만들어지는게 맞다면
안녕하세요? 자바를 복습하면서 강의를 듣고 있는 학생입니다. 지난 강에서 dataA의 필드 변경을 위해 changeReference라는 메서드를 사용하셨을 때, Data dataX를 파라미터로 사용했었는데 강의에선 dataA와 동일한 참조값을 갖는 dataX라는 인스턴스도 메모리 상에 생성되었습니다. 아직 진도가 나가진 않았지만 기존에 알고 있었던 제 지식으로는 changeReference 메서드 호출시 스택 메모리 상에서 dataX가 생성되고 메소드 종료시 dataX는 소멸되고 힙 메모리 상 변경된 값은 갱신되는 것으로 알고 있는데 이게 맞나요? 이게 맞다면 이번 강의의 createStudent 메서드 파라미터들도 메서드 호출시 스택 메모리 상에 각각 인스턴스(name이나 age 등)가 생성될텐데 그림에는 이 부분이 없어서요. 너무 그림이 산만해질까봐 넣지 않으신 것으로 예상하긴 하는데 제가 아는 바가 틀린 것이 아니라면 이 부분을 넣는 것이 처음 배우는 분들을 위해 도움이 되지 않을까해서 여쭤봅니다.
-
미해결스프링 핵심 원리 - 기본편
컴포넌트 스캔의 싱글톤 관리 방식
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 에3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요 김영한님 스프링 강의를 듣다가 궁금한점이 생겼습니다. 컴포넌트 스캔 방식이 아닌 직접(수동) 스프링 빈을 등록하는 방식은 설정 정보 클래스에 @Configuration 어노테이션이 붙어있지 않으면 싱글톤으로 관리가 안 되는 걸로 알고 있습니다. 그래서 @Configuration를 붙이면 그 설정 클래스를 CGLIB 라이브러리가 확장시켜서 싱글톤으로 관리하는 건데 이렇게 하면 설정 클래스 이름에 CGLIB가 붙죠 컴포넌트 스캔 방식을 활용하면 @Configuration을 안 붙여도 컴포넌트 붙은 클래스들을 자동으로 스캔해서 싱글톤으로 관리 해주는걸 확인했습니다. 그래서 @ComponentScan 이 붙은 클래스 또한 Test에서 실제 사용하는 클래스 이름을 꺼내보면 CGLIB 이름이 붙은 클래스일 거라고 예상을 했는데 예상과 다르게 보통 클래스들과 이름이 동일했습니다.제 추측은 @Component 어노테이션이 CGLIB라이브러리와 같은 역할을 하는 걸까? 라는 생각을 했는데 실제 컴포넌트 스캔 방식의 싱글톤 유지 방식은 어떤 걸까요?
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
Person을 입력하니 오류가 뜨는 이유가 무엇인가요?
화면처럼 Person에 오류가 뜹니다
-
미해결김영한의 실전 자바 - 중급 1편
중첩 클래스의 접근에 관하여
안녕하세요 질문이 있어서 글을 남깁니다.중첩 클래스를 외부에서 사용한다면 중첩 클래스에 대한 용도가 맞지 않아 밖으로 빼는 것이 더 적절하다고 하셨는데 A(중첩 클래스를 외부에서 사용되는 클래스)에 Outer클래스를 넣어서 사용해도 되는거 아닐까 라는 생각이 들었는데 어떤 차이가 있는지 궁금합니다.
-
미해결김영한의 실전 자바 - 기본편
super2main에서 classB()생성자 안에 this(a, 0)말고 super()도 생략되어 있는거 아닌가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 상속 강의 마지막 부분에 public class ClassB extends ClassA{ public ClassB(int a){ this(a, 0); // 기본 생성자 생략 가능 System.out.println("ClassB 생성자 a = " + a); } public ClassB(int a, int b){ super(); // 기본 생성자 생략 가능 System.out.println("ClassB 생성자 a = " + a +" b = " + b); } } 여기서 ClassB(int a) 생성자에 super()가 생략되어 있는거 아닌가요? public class Super2Main{ public static void main(String[] args){ ClassB classB = new ClassB(100); } }제가 이해한 바로는new ClassB(100) 호출시 ClassB(int a) 안에 생략된 super()가 호출되고 this(a, 0)이 실행되고 ClassB(int a, int b)안에 super()가 실행되고 나머지 실행되고 ClassB(int a)에 나머지 코드가 실행돼서 "ClassA 생성자"가 두번 호출되어야하는게 아닌가 해서요.
-
해결됨C개발자를 위한 최소한의 C++
new/ delete 질문
포인터 new 시, 주소값과 가리키는 Data 메모리도 동시 할당되나요?포인터 delete 시, 주소값과 가리키는 Data 도 메모리도 해제? 혹은 주소값만 해제되나요?
-
해결됨스프링 핵심 원리 - 기본편
컨테이너 생성
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. 강의에서 AllBeanTest 클래스에서 스프링 컨테이너 생성할 때, 구성 정보로 AutoAppConfig.class 외에도 DiscountService.class를 넣어주셨습니다.이렇게 넣어준 이유는 AllBeanTest 클래스는 Test 코드로 AutoAppConfig의 하위폴더에 속하지 않아, 따로 DiscountSerVice.class를 구성 정보로 넣어주신건가요?의존관계 자동 주입 범위를 알고 싶습니다. 구성 정보로 넣은 클래스가 속한 폴더를 포함해 하위 폴더에서 Annotation을 알맞게 기입한 클래스를 빈으로 등록하고 의존관계를 주입시켜주는게 맞을까요? DiscountService 클래스는 자동등록을 통해 빈으로 등록된건가요? 아니면 수동 등록을 통해 빈으로 등록된건가요? 전자라면 왜 @Component가 없는지 후자라면 왜 @Bean이 없는지 알고 싶습니다.