묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
의존관계주입 OCP, DIP
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]자동의존관계 주입시 중복되는 빈이 2개일때파라미터 이름, Qualifier 를 쓴다고 하는데 쓰는거는 이해가 가는데 들으면거 의문이 든게 만약 이런걸 붙여서 Impl 코드를 수정해야된다면 예를들어 파라미터이름을 rateDiscountpolicy 로 쓰다가 fixDiscountPolicy로 바꾼다면 예전에 배운 DIP와 OCP 를 지켜지는게 맞는가 싶더라고요, 만약 중복을 분리하기위해 그렇게한다면 new RateDiscountPolicy 에서 new FixDiscountPolicy 로 바꾸는것과 큰차이가 잇을까였습니다.결국 구현체를 바꾸고싶을때 직접적으로 코드를 수정해야된다면 이러한 규칙이 잘맞는지 굳이 써야할이유가 있는지 궁금합니다
-
해결됨김영한의 실전 자바 - 기본편
상속에서 this 질문있습니다.
결론부터 말씀드리면 자식 클래스 에서 아무런 멤버변수를 초기화하지 않을 때,생성자에서 this.[변수명]으로 멤버변수를 초기화 할 수 있는걸로 압니다.그런데 아래 이미지는 this로 접근한 동일 이름의 변수에서 왜 부모 변수가 변경되는건가요?자기자신의 멤버 변수가 생성자에서 초기화되는 개념이 아닌가요? 부모의 price 100으로 고정 자식 클래스에서 price를 생성자에서 초기화 자식 인스턴스의 printCar() 메서드 호출 결과. 둘다 1000인 이유가는 무엇인가요? 부모는 100이 아닌
-
미해결김영한의 실전 자바 - 중급 1편
private 인데 static 을 붙인이유
강사님 답변을 부탁드려봅니다 왜 private인데 static 을 붙여뒀는지 알수있을까요?어차피 NetworkMessage클래스를 Network클래스 안에서만 쓰려고 private 을 붙여뒀는데 왜 static 을 붙여둔건가요? public class Network { public void sendMessage(String text) { NetworkMessage networkMessage = new NetworkMessage(text); networkMessage.print(); } private static class NetworkMessage { private String content; public NetworkMessage(String content) { this.content = content; } public void print() { System.out.println(content); } } }
-
미해결김영한의 실전 자바 - 중급 1편
static 붙인 이유
왜 static 을 붙여뒀는지 알수있을까요?NetworkMessage클래스를 Network클래스 안에서만 쓰려고 private 을 붙여뒀는데 왜 static 을 붙여둔건가요? public class Network { public void sendMessage(String text) { NetworkMessage networkMessage = new NetworkMessage(text); networkMessage.print(); } private static class NetworkMessage { private String content; public NetworkMessage(String content) { this.content = content; } public void print() { System.out.println(content); } } }
-
해결됨김영한의 실전 자바 - 중급 2편
직접 구현하는 연결 리스트2- 데이터 추가 삭제1, 코드 리뷰 좀요.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 영상 강의를 보면서 영상에 나온 그림을 보면서 코드를 만들어봤습니다.그래서 코드 리뷰 좀 받고 싶게 되더군요.좀 부족하지만 올립니다.힌트는 동영상에 나오는 그림에 나오는 노드 연결 했을때 나오는 코드(초록색 으로 칠해져 잇는 그림 들) 를 보고 영상을 돌려보면서 만들었습니다.메인이 된것은 NodeMain3에서 스테틱 메서드 입니다.반환이 안되면 값이 똑같이 나와서 반환을 해주었습니다.(이유를 모르겠음)메인 코드 결과추가1인덱스 리무브에서, 맨마직꺼 리므브는 안되겟네요. 올리고나서 발견..추가2설명 하라고 하신다면 솔직히 못 하겠습니다. sout로 node 값 찍어 보고, 어찌저찌 하다가 된거 라서요. 답변 부탁 드립니다.
-
미해결스프링 핵심 원리 - 기본편
Appconfig관련질문입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]MemberAppzmf래스에서 MemberService memberService = appconfig.memberService(); 여기서 appconfig.memberService()을 호출합니다 public MemberService memberService(){ return new MemberServiceImpl(new MemoryMemberRepository()); } 여기서MemberServiceImpl로가서 그다음에 어떻게해서 MemoryMemberRepository()가 어떻게 실행되느건가요? public MemberServiceImpl(MemberRepository memberRepository){ this.memberRepository = memberRepository; } MemberServiceImpl(MemberRepository memberRepository)->MemberServiceImpl() 괄호안에 new MemoryMemberRepository()이 코드가 들어가는건가요?
-
해결됨오브젝트 - 기초편
2-4-예제, 절차에서 객체로 코드 오타 제보드립니다.
안녕하세요 강사님2-4-예제. 절차에서 객체로 강의를 수강하고 있습니다.해당 내용이 강의를 수강하는데 불편함은 없지만 제보 드립니다. 강의시간 7:01에 isSatisfiedBy() 함수에 새로운 조건문 추가시if () {} else if() {} if() { //if로 코드가 추가 되어 있습니다.} https://github.com/eternity-oop/object-basic-02-04/blob/main/src/main/java/org/eternity/reservation/domain/DiscountCondition.java샘플 코드도 확인해 보았는데 if로 된 부분을 확인 하였습니다. 감사합니다.
-
미해결Readable Code: 읽기 좋은 코드를 작성하는 사고법
단축키 질문드립니다
학습 관련 질문을 남겨주세요. 어떤 부분이 고민인지, 무엇이 문제인지 상세히 작성하면 더 좋아요!먼저 유사한 질문이 있었는지 검색해 보세요.서로 예의를 지키며 존중하는 문화를 만들어가요. 14분쯤 getSelectedRowIndex 메서드 추출하실때두 줄을 한번에 선택하시는데 단축키가 뭘까요..
-
미해결스프링 핵심 원리 - 기본편
coreApplication은 실행 시 debug레벨로 찍히는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]OrderApp 이나 MemberApp실행 시 로그가 출력되지 않는 경우는 logback.xml 파일 추가해서 해결하였지만,logback 설정을 하지 않더라고 CoreApplication 실행 시에는 debug 레벨로 로그가 찍히는 이유가 궁금합니다.
-
미해결[코드팩토리] [입문] Dart 언어 4시간만에 완전정복
4강애싱크 프로그래밍에서 12:46에서
4강애싱크 프로그래밍에서 12:46에서 addnumber함수는 비동기함수가 아니라 동기함수 아닌가요?그럼 위에 addnumber()가 끝나고(2초기다리는거까지 하고)나서 밑에 addnumber()가 실행돼야하는거 아닌가요??왜 위 addnumber의 2초를 기다리지 않고 밑에 addnumber를 실행하죠?Addnumber의 반환타입이 Future<void>가 아니라 그냥 void니까 동기함수 아닌가요??
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
오타 제보
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]그냥 문제 없는 단순 오타이긴 한데 제보드립니다..리플렉션 강의노트와 강의자료 MethodV2 클래스 주석에 동적 메서드 호출 - 리플렉션 사용인데 사요로 되어 있어서 제보드립니다. 감사합니다.
-
해결됨오브젝트 - 기초편
다형성을 이용한 역할 디자인과 그에 대응되는 영속성 저장소에서의 모델 디자인의 괴리
안녕하세요. 영호님 좋은 책 그리고 그에 보충되는 강의를 정말 잘 읽고 있습니다. 책을 읽고 많은 교훈(역할, 책임 협력의 중요성)을 얻고 실무에 반영해보려했던 2년간의 경험이 있었습니다.역할과 책임에 따른 객체에 따른 클래스 디자인을 설계하고 관계형 데이터베이스와 ORM 기술을 이용해서 설계를 진행할 경우 테이블이 많아지는 경향성이 있다고 느껴왔습니다. DB 모델과 객체 모델은 달라야하는 걸까요? 아니면 같은 형태로 가도록 지향해야할가요? 비즈니스에 맞게 유연하게 진행해야하는 것은 알지만 여기서 "유연하게"가 모델과의 일치를 지향하면서 최적화를 해나가야하는건지 조영호님의 경험과 의견이 궁금합니다. (질문이 제대로 전달되는지 모르겠네요.)
-
미해결스프링 핵심 원리 - 기본편
데이터 호출관련 문의드립니다
package hello.core; import hello.core.member.Grade; import hello.core.member.Member; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; import hello.core.order.Order; import hello.core.order.OrderService; import hello.core.order.OrderServiceImpl; public class OrderApp { public static void main(String[] args) { OrderService orderService = new OrderServiceImpl(); MemberService memberService = new MemberServiceImpl(); Long id=10L; Member member = new Member(id, "aaa", Grade.VIP); memberService.join(member); System.out.println(member.getName()+" "+" "+member.getId()+" "+" "+member.getGrade()); Order order = orderService.createOrder(id,"XBOX",100000); // // System.out.println("order = " + order); } }멤버의 정보까지는 정상적으로 불러와지는데 주문정보를호출하는 과정부터 멤버 정보를 받아오지 못하는거 같습니다.public interface OrderService { Order createOrder(Long id, String itemName, int itemPrice) throws IllegalStateException; }public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository = new MemoryMemberRepository();//회원 정보 찾기 private final DiscountPolicy discountPolicy = new FixDiscountPolicy();//할인 금액 @Override public Order createOrder(Long id, String itemName, int itemPrice) { Member member = memberRepository.findById(id); if(id ==null){ throw new IllegalStateException("유효하지 않은 아이디 입니다" + id); } int discountPrice = discountPolicy.discount(member, itemPrice); return new Order(id, itemName, itemPrice,discountPrice); } }public class Order { private Long id; private String itemName; private int itemPrice; private int discountPrice; public Order(Long id, String itemName, int itemPrice, int discountPrice) { this.id = id; this.itemName = itemName; this.itemPrice = itemPrice; this.discountPrice = discountPrice; } public int calculatePrice(){ return itemPrice - discountPrice; //비지니스 로직 } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getItemName() { return itemName; } public void setItemName(String itemName) { this.itemName = itemName; } public int getItemPrice() { return itemPrice; } public void setItemPrice(int itemPrice) { this.itemPrice = itemPrice; } @Override public String toString() { return "Order{" + "id=" + id + ", itemName='" + itemName + '\'' + ", itemPrice=" + itemPrice + ", discountPrice=" + discountPrice + '}'; } }order 패키지 쪽 소스 인데 수정해야 될부분이 있을까요Exception in thread "main" java.lang.NullPointerException: Cannot invoke "hello.core.member.Member.getGrade()" because "member" is null at hello.core.discount.FixDiscountPolicy.discount(FixDiscountPolicy.java:10) at hello.core.order.OrderServiceImpl.createOrder(OrderServiceImpl.java:20) at hello.core.OrderApp.main(OrderApp.java:22)에러는 이와같이 발생합니다도와주셔서 감사합니다
-
해결됨김영한의 실전 자바 - 기본편
클래스 따로 만들어 선언하는 이유
package ref.ex; public class ProductOrder { String productName; int price; int quantity; }package ref.ex; public class ProductOrderMain2 { static ProductOrder createOrder(String productName, int price, int quantity) { ProductOrder order = new ProductOrder(); order.productName = productName; order.price = price; order.quantity = quantity; return order; } static void printOrders(ProductOrder[] orders) { for (ProductOrder order : orders) { System.out.println("상품명: " + order.productName + ", 가격: " + order.price + ", 수량: " + order.quantity); } } static int getTotalAmount(ProductOrder[] orders) { int amount = 0; for (ProductOrder order : orders) { amount += order.price * order.quantity; } return amount; } public static void main(String[] args) { ProductOrder[] orders = new ProductOrder[3]; orders[0] = createOrder("두부", 2000, 2); orders[1] = createOrder("김치", 5000, 1); orders[2] = createOrder("콜라", 1500, 2); printOrders(orders); System.out.println("총 결제 금액: " + getTotalAmount(orders)); } }섹션3, 기본형과 참조형 문제와 풀이여기에서 productName, price, quantity를 다른 클래스에 따로 선언하는 이유가 인스턴스를 생성하기 위함인가요? 만약 맞다면, 클래스 ProductOrderMain2의 멤버변수로 선언하고 만들면 비효율적인가요? 아니면 불가능한가요?
-
미해결김영한의 실전 자바 - 중급 1편
문제와 풀이 2 findByCode메서드 질문
안녕하세요 자바를 복습하다가 헷갈려서 질문 남깁니다 문제와 풀이 2번 HttpStatus 코드 정답에서public enum HttpStatus { .... public static HttpStatus findByCode(int code) { for(HttpStatus status : values()) { ... ... }findByCode는 static 메서드인데 안에 values()가 있길래 values() 메서드도 static 메서드겠구나하고 enum 클래스에 들어가 values()를 찾으려했습니다 . 그런데 enum의 메서드에는 values()가 없었어요..GPT에게 물어보니 values()는 enum 클래스에서 자동으로 생성되는 static 메서드라는데 이게 무슨말인지 이해가 잘 안갑니다 !..
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
MethodEx1Ref 질문입니다
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]average 메서드에 return 값을 sum / 3.0이 아닌 sum / 3.0을 저장한 average 변수를 반환해도 상관없나요? 이렇게 변수에 넣어 반환하니까 변수명에 인텔리제이가 노란줄을 그어서 혹시 이렇게 반환하는게 잘못된것인지 궁금해서 질문드립니다.
-
미해결김영한의 실전 자바 - 중급 1편
매개 객체의 값을 사용하는데 접근 제어자가 private 인데 바로 접근이 어떻게 가능한가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.public class UserV2 { private String id; public UserV2(String id) { this.id = id; } @Override public boolean equals(Object obj) { UserV2 user = (UserV2) obj; return id.equals(user.id); } }여기서 제일 마지막줄의return id.equals(user.id);id 는 자신의 것이니까 바로 접근이 가능한데user.id 는 매개변수로 넘어온 것인데 private 로 된 id에 바로 접근한다는게 이상합니다.getId() 메서드를 만들어서 사용하는 것이 아닌 직접 접근이 어떻게 가능한가요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
배열에서 사용하는 length는 무엇인기 궁금합니다.
안녕하세요, 배열에서 당연하게 쓰고 있다가 문득 궁금증이 생겨서 질문을 드립니다. 배열을 생성하고 해당 배열의 길이를 알고 싶을 때, 자주 쓰던 length가 어디서 나온 것인기 궁금합니다. String 객체 같은 경우 String a = "example"; int length = a.length();다음과 같이 length() --> 메서드임을 알 수가 있는데 배열에서 사용하는 length 같은 경우는 int[] a = new int[5]; int length = a.length;다음과 같이 소괄호() 없이 사용을 하게 되는데, 이게 뭔지 궁금해서 IDE 에서 command 클릭을 해도 해당 메서드의 출처를 알 수 가 없어 질문을 드립니다. 배열에서 사용하는 length 같은 경우 자바 자체적으로 있는 static 메서드 같은 존재인가요?
-
미해결김영한의 실전 자바 - 중급 1편
PDF 수업 자료 오타 제보
8. 중첩 클래스, 내부 클래스 2의 30페이지 소제목에 오타가 있습니다람다(lamba) -> 람다(lambda)사소한 오타지만 수정되면 좋을 것 같습니다.강의 재밌게 듣고 있습니다. 감사합니다
-
미해결남박사의 파이썬으로 봇 만들기 with ChatGPT
개봉 날짜 및 평점 가져오는 코드 추가
강의에서 제공된 코드는 영화 개봉 날짜, 평점을 가져오지 못하고 있는데 아래 코드 사용하시면 됩니다.그리고 태그가 단일 요소일 경우 contents 속성을 사용하기 보다는 string 속성을 사용하면 리스트가 아닌 문자형으로 바로 출력할 수 있습니다.for dt, dd in zip(c_dt, c_dd): if dd.select_one('c-star'): rating = dd.select_one('c-star').next_element.strip() c_data[dt.string] = rating elif dd.select_one('span'): days = dd.select_one('span').string c_data[dt.string] = days else: c_data[dt.string] = dd.string