묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
char 대신 String만
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.char 대신 String만 쓸 수도 있나요
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
키워드 synchronized와 어노테이션 synchronized
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강의에서는 키워드 synchronized를 메서드 앞부분에 붙여 동기화를 구현하는데, 롬복의 @Synchronized 다른 점이 무엇인지 궁금합니다. 그리고 실무에서는 둘 중 어느 방법을 사용하는지도 궁금합니다!
-
미해결김영한의 실전 자바 - 기본편
수업자료 오타 확인 부탁드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요. 복습중 실행오류로 발견했습니다패키지가 oop 대신 oop1에 들어가야 할 것 같아요. 강의에도 oop1으로 되어있네요.p.12에 있어요++ 조금 명확히 하자면이 코드를 실행하는 main 클래스가 oop1에 있어서 저 클래스를 참조 못하는 것 같아요.이 자료는p.13 과 p.14에 걸쳐 있어요
-
미해결스프링 핵심 원리 - 기본편
@Quilfier 못찾을 수행하는 것 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 7분 10분경부터 나오는 내용중@Quilfier("mainDiscountPolicy")로 지정된 것을 못찾으면 mainDiscountPolicy라는 이름의 스프링 빈을 찾는 과정을 두번쨰로 수행한다고 하셨고 그리고 바로 뒤에 또 못찾으면 mainDiscountPolicy 나 스프링 빈을 찾아서 가져온다라고 하셨는데요.. mainDiscountPolicy을 못찾으면 mainDiscountPolicy을 찾아서 가져온다는게 무슨 말인지 이해가 안갑니다..어떤 클래스에 @Quilfier("mainDiscountPolicy")를 지정했으면 생성자에서 mainDiscountPolicy 이것을 찾아 주입을 할 것이고못찾으면 mainDiscountPolicy 이름의 스프링 빈을 찾는다. 여기서 mainDiscountPolicy라는 이름의 스프링이라는게 좀 헷갈리는데 스프링 이름이 그 메소드 명으로 등록된다고 하셨으니 다음AppConfig에서처럼 @Configuration public class AppConfig { ... @Bean public DiscountPolicy mainDiscountPolicy() { return new RateDiscountPolicy(); } }discountPolicy() 함수가 아니라 mainDiscountPolicy() 함수 명으로 등록된 스프링 빈이거나, 컴포넌트 스캔으로 스프링 빈으로 등록된 MainDiscountPolicy 같은 클래스를 말씀하시는건가요?
-
미해결스프링 핵심 원리 - 기본편
강의 내용과 에러가 다릅니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]OrderServiceImpl.@Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } @Override public Order createOrder(Long memberId, String itemName, int itemPrice) { Member member = memberRepository.findById(memberId); // 회원 정보 조회 int discountPrice = discountPolicy.discount(member, itemPrice); return new Order(memberId, itemName, itemPrice, discountPrice); } // 테스트 용도 public MemberRepository getMemberRepository() { return memberRepository; } }3분 5초경부터 강의에서 설명하는 에러는 NoUniqueBeanDefinitionException인데저는Error creating bean with name 'orderServiceImpl' defined in file [C:\Users\Desktop\spring\core\build\classes\java\main\hello\core\order\OrderServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 1: No qualifying bean of type 'hello.core.discount.DiscountPolicy' available: expected single matching bean but found 2: fixDiscountPolicy,rateDiscountPolicyorg.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'orderServiceImpl' defined in file [C:\Desktop\spring\core\build\classes\java\main\hello\core\order\OrderServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 1: No qualifying bean of type 'hello.core.discount.DiscountPolicy' available: expected single matching bean but found 2: fixDiscountPolicy,rateDiscountPolicy 이라고 나옵니다. 빈 하나가 매칭되길 예상했는데 두개를 찾았다. 이런부분은 동일한것같은데.. 에러내용이 다르네요 어떤부분이 문제일까요
-
해결됨스프링 핵심 원리 - 기본편
강의 내용과 에러가 다릅니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]OrderServiceImpl.@Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; this.discountPolicy = discountPolicy; } @Override public Order createOrder(Long memberId, String itemName, int itemPrice) { Member member = memberRepository.findById(memberId); // 회원 정보 조회 int discountPrice = discountPolicy.discount(member, itemPrice); return new Order(memberId, itemName, itemPrice, discountPrice); } // 테스트 용도 public MemberRepository getMemberRepository() { return memberRepository; } }3분 5초경부터 강의에서 설명하는 에러는 NoUniqueBeanDefinitionException인데저는Error creating bean with name 'orderServiceImpl' defined in file [C:\Users\Desktop\spring\core\build\classes\java\main\hello\core\order\OrderServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 1: No qualifying bean of type 'hello.core.discount.DiscountPolicy' available: expected single matching bean but found 2: fixDiscountPolicy,rateDiscountPolicyorg.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'orderServiceImpl' defined in file [C:\Desktop\spring\core\build\classes\java\main\hello\core\order\OrderServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 1: No qualifying bean of type 'hello.core.discount.DiscountPolicy' available: expected single matching bean but found 2: fixDiscountPolicy,rateDiscountPolicy 이라고 나옵니다. 빈 하나가 매칭되길 예상했는데 두개를 찾았다. 이런부분은 동일한것같은데.. 에러내용이 다르네요 어떤부분이 문제일까요
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
synchronized vs ReentrantLock vs Atomic 너무 혼란스럽습니다..
synchronized, ReentrantLock, Atomic 모두 상호배제(동기화)를 구현하지만, 락을 "획득하고 해제하는 과정" 자체도 동시 접근이 발생할 수 있는 또 다른 임계영역처럼 보입니다.→ 그렇다면 이 락 자체 또한 어떻게 동기화하는지 궁금합니다.핵심적으로,synchronizedJVM이 모니터 락을 통해 상호배제를 구현하는데 내부적으로CAS 연산 + OS의 스레드 대기 관련 시스템 콜 + JVM 내부 스레드 대기 큐 을 활용 상호배제를 구현한다.즉, 락 획득과 해제 과정의 동기화는 JVM 수준에서 구현한 것이다. OS는 단지 스레드를 잠재우고 깨우는 역할만 담당→ 이 이해가 맞는지?ReentrantLock자바에서 명시적으로CAS 연산 + OS의 스레드 대기 관련 시스템 콜 + 스레드 대기 큐을 활용하여 상호배제를 구현한다.즉, 락 획득과 해제 과정의 동기화는 자바 코드 수준에서 직접 구현한 것이다. OS는 단지 스레드를 잠재우고 깨우는 역할만 담당→ 이 이해가 맞는지?Atomic자바에서 명시적으로CAS 연산 활용하여 상호배제를 구현한다.즉, 락이 없고, 시스템콜도 없다. CAS 한 줄이 동기화의 전부→ 이 이해가 맞는지?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
오라클 jdk21 버전이 없어서 이클립스 21 하려 했는데 둘 다 없습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.오라클 jdk21 버전이 없어서 이클립스 21 하려 했는데 둘 다 없습니다.찾아보니, 25년 초쯤에 오라클 24버전이 나와서 없어진듯 한데.,. 그 버전으로 해도 무방한가요?
-
해결됨김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
스트림: read()가 int를 반환하는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. byte는 -128~127이고 int는 0~255 범위라 음수 부분이 전혀 겹치지 않는데, read()에서 어떤 방식으로 byte를 int로 변환하는 건지 대략적인 기준이 궁금합니다. 아스키 코드의 0~126까지는 그대로 int로 변환이 되고 그 외 byte의 음수가 그대로 int 나머지 범위(127~255)까지 배정되는 방식일까요? +)아스키 코드(0~126)에 포함되지 않는 byte -128~-1까지의 대략적인 의미가 궁금합니다. 얘네는 영문 외 외국어나 추가 특수 문자들 같은 걸까요?
-
미해결스프링 핵심 원리 - 기본편
@Configuration이 빈을 등록하는 것은 아닌게 맞나요?
아마 4. 스프링으로 전환하기 강의에서 설명하신 바에 따르면 스프링 빈을 생성하려 할 때new AnnotationConfigApplicationContext(AppConfig.class) 해서 @Configuration을 기반으로 한 클래스를 인자로 전달하면, 이 클래스 내에 @Bean이 붙은 것들은 스프링 컨테이너에 빈으로 등록한다 라고 설명하셨는데요, 여태 @Configuration이 달린 AppConfig를 전달 해주었다면 이번 강의에서는 @Configuration을 삭제한 AppConfig를 전달 해주셨고 붙이지 않아도 @Bean이 붙은 객체들은 스프링 빈으로 다 등록된다고 하셨는데요. 그렇다면 @Configuration의 역할은 4. 스프링으로 전환하기에서 설명하셨던 것과 달리 @Configuration이 붙은 클래스내의 @Bean 붙은 것들을 스프링 빈으로 등록하도록 해주는 것이 아니라 @Bean은 @Configuration이 없어도 빈으로 등록되는 것이고 @Configuration의 역할은 그저 스프링 빈이 싱글톤임을 보장해주는 역할인 것인가요? 제가 기억한 앞선 강의와 살짝 달라진것 같아 헷갈리네요
-
미해결스프링 핵심 원리 - 기본편
CoreApplication 테스트 코드 오류 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의에서 CoreApplication 클래스에 @ComponentScan이 있기에 스프링부트 실행시 이 CoreApplication 클래스가 속해있는 패키지부터 이하의 패키지까지해서 @Component을 찾아 스프링 빈을 자동으로 등록된다고 하셨습니다.그래서 스프링부트(CoreApplication)를 사용하면 여기에 @ComponentScan이 있기에 딱히 @ComponentScan을 사용하지 않는다고 하셨습니다. 그렇다면! 이전 AutoConfigTest에서public class AutoAppConfigTest { @Test void basicScan() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(CoreApplication.class); MemberService memberService = ac.getBean(MemberService.class); assertThat(memberService).isInstanceOf(MemberService.class); } }이렇게 AutoAppConfig.class -> CoreApplication.class 로 변경해도 똑같이 동작하지 않을까? 하는 생각해 그대로 테스트 코드를 진행했으나,위 와 같은 에러가 나네요.저는 CoreApplication 클래스에 컴포넌트 스캔이 있으니 이것을 테스트 코드에 대신 넣어도 다른 @Component를 찾아 스프링 빈으로 등록할것이다 라고 생각했는데 에러가 나니 어떻게 된건지 모르겠네요.제가 어디 잘못이해하거나 빠뜨린 것 있을까요?
-
미해결코틀린 고급편
[23강] SuperTypeToken의 equals 관련 질문
안녕하세요 강사님 23강 강의를 보다가 한가지 여쭤보고 싶은 사항이 있어서 질문을 남기게 됐습니다. 11분 46초 부분을 보면 equals 가 제대로 동작하지 않아서 if (javaClass != other?.javaClass) return false 해당 부분을 삭제하는 부분이 나오는데요. 해당 코드를 해석해보면 2개의 javaClass가 다르기 때문에 equals가 false가 나왔다는 의미 같은데, 혹시 2개의 javaClass가 다른 이유가 무엇인지 알려주실 수 있으실까요? 똑같은 타입의 클래스를 인스턴스화 했기 때문에 동일한 javaClass라고 생각을 했는데 2개가 다르다고 나오니 이해가 잘 되지 않습니다! 감사합니다.
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
우아한 종료 방식은 왜 라이브러리에 공식적으로 추가하지 않았을까요? ㅎㅎ
학습적으로 필요한 질문은 아니긴 하지만.. 100% 궁금해서 질문 드리는데요! 필요한 대부분의 기능을 미리 만들어서 제공하는 라이브러리에서학습 중 직접 작성한 shutdownAndAwaitTermination 메서드 같은건 왜 공식적으로 만들어 제공하지 않은걸까요?좀 충격? 적인건 라이브러리에 구현방법을 주석까지 남겨가며 제안했다는 건데요... 저걸 왜 그냥 메서드로 만들어두지않고 제안만 한걸까요?구조적인 문제가 생기는걸까요?너무 궁금하네요...ㅋㅋ
-
미해결스프링 핵심 원리 - 기본편
앞서 스프링컨테이너에서 빈을 싱글톤으로 생성한다고 하지 않았나요>
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]이번 @Configuration과 싱글톤 강의에서 이해가 잘가지 않아 질문드립니다..이번 강의가 AppConfig에 있는 스피링빈을 생성할 때, new MemberServiceImpl , new OrderServiceImpl 를 호출하면서 memberRepository() 가 여러번 호출 되지 않을까 하는게 강의 내용인데요, 앞서 '싱글톤 컨테이너' 강의에서 이미 스프링 컨테이너가 빈을 생성할때 싱글톤으로 생성된다고 설명을 하셨ㅇ니까그럼 이번 강의에서도 AppConfig의 new MemberServiceImpl 와 new OrderServiceImp 을 호출하면서 memberRepository()이 호출 될 때 여러번이 아닌 한번만 호출되는것이 당연한거 아닌가? 라는 생각이 드는데요..싱글톤으로 생성된다고 했으니 당연히 한번만 호출되겠지.. 라는 생각이요..그래서 이번 강의에서 초반부에 여러번 호출되어야하지 않을까 의문점을 가지는 부분 자체가 잘 이해가 안갑니다..그냥 싱글톤으로 생성된다는것을 증명하는 것인가요?제가 빈을 싱글톤으로 생성한다는 결과 자체를 이미 들은상태라 그런걸까요 AI 답변말고 답변해주세요ㅠ 이너
-
미해결코틀린 고급편
23강 타입 안전 이종 컨테이너 예제 관련 문의 드립니다.
저같은 경우, 7:32 부분에서 List<GoldFish> 를 저장했다가 List<Carp> 타입을 꺼내려고 하면 "class generic.GoldFish cannot be cast to class generic.Carp (generic.GoldFish and generic.Carp are in unnamed module of loader 'app')" 와 같은 오류가 발생하는데, 정상적으로 금붕어 리스트가 반환되는게 맞는지요 ? 제가 뭔가 놓친 부분이 있을까 궁금하여 문의 드립니다.샘플코드는 다음과 같습니다.package reflection import generic.Carp import generic.GoldFish import kotlin.reflect.KClass import kotlin.reflect.full.cast class TypeSafeCage { val animals: MutableMap<KClass<*>, Any> = mutableMapOf() inline fun <reified T : Any> getOne(): T { return T::class.cast(animals[T::class]) } inline fun <reified T : Any> putOne(animal: T) { animals[T::class] = T::class.cast(animal) } } fun main() { val cage = TypeSafeCage() cage.putOne(listOf(GoldFish("금붕어1"), GoldFish("금붕어2"))) cage.getOne<List<Carp>>().forEach { println(it::class.simpleName) } } // 다른 패키지 파일 package generic open class Animal( val name: String ) open class Fish(name: String) : Animal(name) class GoldFish(name: String) : Fish(name) class Carp(name: String) : Fish(name) 강의 중 영상 캡쳐 화면
-
미해결스프링 핵심 원리 - 기본편
DIP 원칙 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]DIP 원칙은 클라이언트 입장에서만 바라봐야하는 건가요?OrderService가 DiscountPolicy와 구현체인 FixDiscount와 RateDiscountPolicy 모두에 의존한다는 것은 알겠습니다.DIP원칙에 따르면 이것은 잘못됐죠 인터페이스에만 의존해야하는데 구체적인 클래스에도 의존하고 있으니까 말이죠.그런데 여기서 DIP가 적용되는것은 클라이언트 입장에서만 인가요? 여기서는 OrderService겠네요. OrderServiceImpl 클래스 코드상에서도 보면 DiscountPolicy도 FixDiscount와 RateDiscount라는 구현체에 new하면서 의존?하는 것같은데 아닌가요? 아니면 이 둘은 말그대로 DiscountPolicy의 구현체라서 DIP 원칙 적용 해당사항이 없는것인가요?
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
자원정리 이후 메인 스레드 종료
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]자원 정리 V6까지 완료했을때 클라이언트를 먼저 종료하면 서버 콘솔에 정상 종료됐다고 로그는 찍히는데 while문이 종료가 안되서 그런지 자바 스레드 자체는 종료가 안되던데 그냥 자원정리만 자동으로 하게 만들고 자바 종료 같은경우엔 직접하는건가요?
-
미해결김영한의 실전 자바 - 기본편
김영한 로드맵
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]로드맵 3 가지가 있는데 자바를 다 듣고나서 스프링을 들어야하나요? 스프링부트 + JPA는 스프링과 자바를 다 듣고 봐야하나요?
-
미해결스프링 핵심 원리 - 기본편
logback을 파일을 추가했음에도 로그 출력안되는 문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]처음에 강의 내용대로 따라하다가 로그가 출려되지 않았기에 질문 답변 게시판을 먼저 훑어보고 버전차이에 따라 로그가 출력되지 않는 문제임을 알고 강사님이 강의자료에 올려주신대로 logback.xml 파일을 resources 패키지 아래에 추가한후 실행했으나,여전히 로그가 강의내용대로 출력되지 않습니다. 뭐가 문제일까요..
-
미해결스프링 핵심 원리 - 기본편
구현 객체가 의존한다?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]약 9분경에 여태 진행한 강의에서와 달리 살짝 다른 부분이 나와 혼란스러운데요,이제껏 강의에서 의존 관계를 설명할때,구현객체를 new로 생성하고 인터페이스가 그것을 참조하는 코드를 의존한다~ 라고 강의를 진행하셨는데요. 예를들어 DiscountPolicy discountPolicy = new FixDiscountPolicy 처럼요. 이떄 DiscountPolicy 인터페이스가 구현 객체 (FixDiscountPoliycy, RateDiscountPolicy)를 참조하는 코드를 의존한다 라고 강의해서 말씀하셨습니다. 그런데 이번 강의 9분경에 DiscountPolicy를 구현한 FixDiscountPolicy 클래스에서 DiscountPolicy에 의존한다 라고 설명하시니 갑자기 혼란스럽습니다. 꼭 new 해서 객체를 생성한후 참조하는 것만이 아니라 OrderServiceImpl 클래스에서처럼 MemberRepository 나 DiscountPolicy를 사용하는 것만으로도 의존한다라고 표현하는 것 같지만 이번에 제가 질문드린것은 약간 새로운? 의존관계 같아서 질문드립니다. 이렇게 되면 DiscountPolicy와 FixDiscountPolicy는 상호 의존 관계가 되는건가요?