묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
다운로드 소스 코드 실행 방법 in 개발 환경 설정
다운로드 소스 코드 진행 방법 따라하는 중인데요,5:49 강의에는 overwrite 하겠냐고 뜨는데 저는 그렇게 안되고 안된다고만 뜹니다. 넘어갈 수 없는데 어떻게 하나요
-
미해결스프링 핵심 원리 - 기본편
싱글톤 패턴 문제점에서 구체클래스 의존해서 DIP위반한다고 하셨는데 이건 싱
싱글톤 패턴 문제점에서 구체클래스 의존해서 DIP위반한다고 하셨는데 이건 싱글톤 아니여도 마찬가지 아닌가요?밑에 처럼 싱글톤을 안써도 , MemberServiceImple이라는 구체구현 클래스가 드러납니다..public MemberService memberService(){ return new MemberServiceImpl(memberRepository()); }
-
미해결스프링 핵심 원리 - 기본편
[질문] > Task :compileJava FAILED 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]항상 고생이 많으십니다. > Task :compileJava FAILED 오류에 대해서 여쭤보고자 합니다.구글링 결과는 java 버전이 맞지 않아서 나오는 문제라고 했는데,다 찾아본 결과 JAVA 17버전으로 맞추고 했는데도 계속 오류가 나는 문제가 있습니다. 현재 윈도우 환경에서 공부하고 있습니다.오류 내용 - 사진 오류 내용 - 코드오류 내용Starting Gradle Daemon... Gradle Daemon started in 2 s 802 ms > Task :compileJava C:\Users\woon7\OneDrive\���� ȭ��\Spring �ٽ� ���� - �⺻��\core\src\main\java\hello\core\AutoAppConfig.java:19: error: illegal start of type <<<<<<< HEAD ^ C:\Users\woon7\OneDrive\���� ȭ��\Spring �ٽ� ���� - �⺻��\core\src\main\java\hello\core\AutoAppConfig.java:19: error: > expected <<<<<<< HEAD ^ C:\Users\woon7\OneDrive\���� ȭ��\Spring �ٽ� ���� - �⺻��\core\src\main\java\hello\core\AutoAppConfig.java:24: error: illegal start of type ======= ^ C:\Users\woon7\OneDrive\���� ȭ��\Spring �ٽ� ���� - �⺻��\core\src\main\java\hello\core\AutoAppConfig.java:29: error: illegal start of type >>>>>>> origin/master ^ C:\Users\woon7\OneDrive\���� ȭ��\Spring �ٽ� ���� - �⺻��\core\src\main\java\hello\core\AutoAppConfig.java:29: error: <identifier> expected >>>>>>> origin/master ^ C:\Users\woon7\OneDrive\���� ȭ��\Spring �ٽ� ���� - �⺻��\core\src\main\java\hello\core\AutoAppConfig.java:29: error: <identifier> expected >>>>>>> origin/master ^ 6 errors > Task :compileJava FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava'. > Compilation failed; see the compiler error output for details. * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. See https://docs.gradle.org/7.6/userguide/command_line_interface.html#sec:command_line_warnings BUILD FAILED in 12s 1 actionable task: 1 executed ``` project Structure - Project placform settings - SDKs 시스템 환경변수 설정 자바 버전 Settings - Gradle 버전 Settings - Java Compier 버전build.gradleplugins { id 'org.springframework.boot' version '2.3.3.RELEASE' id 'io.spring.dependency-management' version '1.0.9.RELEASE' id 'java' } group = 'hello' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' //lombok 설정 추가 시작 configurations { compileOnly { extendsFrom annotationProcessor } } //lombok 설정 추가 끝 repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter' //lombok 라이브러리 추가 시작 implementation 'org.projectlombok:lombok' annotationProcessor ("org.projectlombok:lombok:1.18.20") testImplementation ("org.projectlombok:lombok:1.18.20") testAnnotationProcessor ("org.projectlombok:lombok:1.18.20") //lombok 라이브러리 추가 끝 testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } } test { useJUnitPlatform() } ``` 다 찾아서 이렇게 설정해보았지만.. 테스트 코드를 돌려도 갑자기 컴파일이 되지 않는 문제가 있습니다..
-
해결됨김영한의 실전 자바 - 중급 1편
강의자료 오타
질문은 아니고, ZoneId 오타가 있어서 알려드립니다~
-
해결됨김영한의 실전 자바 - 중급 2편
Node<E> 와 <E> E 차이점
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. Node<E> 와 <E> E 헷갈려서 질문을 드립니다.Node<E> 는 배열안의 값을 E 타입으로 고정하는걸로 이해하면 되나요?
-
미해결스프링 핵심 원리 - 기본편
의존성 주입과 빈의 관계
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 수동으로 빈을 등록 할 때 빈이 등록되는 순서는 개발자가 작성한 순서대로 보장되지 않음을 수동 빈 등록 강의에서 배웠습니다. 그렇다면, 자동으로 빈을 등록할 때는 빈의 등록 순서가 어떻게 되나요? 만약 컴포넌트 스캔의 basePackages가 hello.core라면, 해당 패키지부터 하위로 차례대로 내려가면서 등록하나요?만약 생성자로 의존 관계를 주입할 때, 주입해야 하는 빈이 등록되어 있지 않으면 어떡하나요? 빈을 찾는데 없다면, 생성자를 호출하고 있는 동시에 빈을 등록하나요? 예를 들어, OrderServiceImpl 빈 등록을 위해 생성자 호출 -> 생성자를 통해 의존 관계 주입 시도 -> 그런데 MemberRepository 빈이 없음 -> MemberRepository 빈 등록. 이런 방식인건가요?
-
해결됨스프링 핵심 원리 - 기본편
[정보글] HelloLombok 실행 시 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]질문 하려다가 제가 해결한 내용을 공유합니다.build.gradle도 다 실행이 되었는데, 제가 겪는 에러 내용은 HelloLombok을 실행할 때에 문제가 발생한다는 점입니다.오류 내용 :Cause: class lombok.javac.apt.LombokProcessor (in unnamed module @0x26eb169f) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing to unnamed module @0x26eb169f찾아보니 이는 JDK 16버전의 경우, Lombok과는 호환이 안된다는것이 원인이었습니다.따라서 https://icea.tistory.com/16이 링크를 참조했고, build.gradle을 이렇게 바꾸어서 해결할 수 있었습니다.해결 전 ://lombok 라이브러리 추가 시작 implementation 'org.projectlombok:lombok' annotationProcessor ("org.projectlombok:lombok") testImplementation 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' //lombok 라이브러리 추가 끝 해결 후 : //lombok 라이브러리 추가 시작 implementation 'org.projectlombok:lombok' annotationProcessor ("org.projectlombok:lombok:1.18.20") testImplementation ("org.projectlombok:lombok:1.18.20") testAnnotationProcessor ("org.projectlombok:lombok:1.18.20") //lombok 라이브러리 추가 끝HelloLombok 코드package hello.core; import lombok.Getter; import lombok.Setter; import lombok.ToString; @Getter @Setter @ToString public class HelloLombok { private String name; private int age; public static void main(String[] args) { HelloLombok helloLombok =new HelloLombok(); helloLombok.setName("qwer"); String name = helloLombok.getName(); System.out.println("name = " + name); System.out.println("helloLombok = " + helloLombok); } } 혹시라도 안되셨던 분들은 참고하시길 바랍니다.
-
해결됨김영한의 실전 자바 - 기본편
상속 메모리 구조에 대해서 질문
상속에서 자식 인스턴스를 생성하면 메모리의 힙 영역에 자식 인스턴스를 비롯한 부모 인스턴스가 같이 생성되는 걸로 알고 있는데요. Parent와 Child가 있을 때 new Child()를 하면 Child 인스턴스 하나, Parent 인스턴스 하나 이렇게 총 두개가 생성되는 건가요? 아니면 인스턴스는 하나만 생성되는데 그 내부에서 Parent 타입과 Child 타입으로 구분되는 건가요?
-
미해결김영한의 실전 자바 - 기본편
자바메모리구조와 static 파트 관련 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]문제2. 수학 유틸리티 클래스 관련 몇가지 질문 드립니다.1)아래 코드와 같이 sum 등을 따로 private static 변수로 만들어도 되나요?public class MathArrayUtils {private static int sum = 0;private static int min = 0;private static int max = 0;private static int[] values;private MathArrayUtils(){}public static int sum(int[] values){int sum = 0;for (int value : values) {sum += value;}return sum;}public static double average(int[] values){return (double) sum / values.length;}public static int min(int[] values){min = values[0]; for (int value : values) {if (value < min){min = value; }}return min;}public static int max(int[] values){max = values[0];for (int value : values) {if(value > max){max = value; }}return max;}}2) 기존 답 코드의 sum, average 등 static method는 MathArrayUtilsMain에 따로 그 값을 받아줄 변수가 없는데 public static int와 같이 따로 return type을 지정해야 하는 이유가 궁금합니다.static이어서 생성자를 생성하지 않고, 클래스에서 바로 값을 가져오기 때문에 따로 반환 값을 받아줄 변수를 지정하지 않아도 되는 것인가요?답안 예시처럼 MathArrayUtils.sum(values)이라면 따로 method 결과값을 받아줄 변수가 없다면 없어도 되는 건 아닌지 질문드립니다.3) MathArrayUtils 클래스에 private int[] values와 같이 array변수를 생성하지 않아도 되나요? 바로 Main메서드에서 array 변수를 생성 및 초기화하고 그 값이 클래스 메서드의 매개변수로 전달될 수 있는 건가요?
-
해결됨자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
Accessing non-final property number in constructor
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.먼저, 좋은 강의를 만들어주셔서 감사합니다. 잘 이해가 되지 않는 부분이 있습니다.Accessing non-final property number in constructor가 발생하는 이유를 다음과 같이 정리해보았는데 맞을까요??하위 클래스(Derived)를 인스턴스화하면서 상속받고 있는 상위 클래스(Base)가 먼저 생성된다.init 블럭이 생성자보다 먼저 호출되므로, init 블럭에서 프로퍼티에 접근하면 초기화되지 않은 기본값을 갖는다.init 블럭이 호출되고 하위 클래스에서 전달한 값이 상위 클래스 생성자에 있는 프로퍼티 값으로 초기화된다.하위 클래스의 init 블럭이 호출될 때, number 프로퍼티 값은 상위 클래스가 갖는 number 프로퍼티 값을 출력한다."Accessing non-final property number in constructor 가 경고창이 드는 이유는 init 블럭에서 초기화되지 않은 number 프로퍼티에 접근했기 때문이다." 라고 정리하면 될까요?!감사합니다.open class Base( open val number: Int = 100 ) { init { println("Base Class") /** * 호출 순서 : init 블럭 -> 생성자 * 따라서 init 블럭에서 number 프로퍼티에 접근하면 초기화되지 않은 초기값인 0을 갖게 된다. */ println("Base Class number ${number}") } }class Derived( override val number: Int ): Base(number) { init { println("Derived Class") println("Derived Class number : ${number}") } }
-
미해결스프링 핵심 원리 - 기본편
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'beanA' available 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 정확히 오류가 무엇인지 모르겠어요 ㅠㅠ
-
미해결김영한의 실전 자바 - 기본편
이늄 클래스 혹은 레코드 메서드 상속 시 인터페이스 default 메서드 사용에 대한 질문 드리고 싶습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요. 강의를 듣다가 궁금한 점이 생겼습니다.인터페이스는 구현 메서드를 가능한 지양해야하므로 default 메서드는 하위 호환 등의 특별한 예외에서 사용해야한다는 말씀에 깊이 공감하고 있습니다.다만 이런 경우는 어떤 접근 방식이 좋을까요?프로젝트내 특정 이늄 클래스들 혹은 레코드들에 대해서 공통화된 메서드 처리를 하고 싶을 때 디폴트 메서드가 있는 인터페이스를 상속받아서 공통 기능을 사용하고 있습니다. 이늄과 레코드는 클래스 상속이 안되어서 생긴 편법? 같은 느낌이 드는데요. 이에 대한 정석적인 접근 방식이 있을까요? .. 또한 이늄과 레코드는 상속을 못하게한 객체지향적인? 이유가 있을 것 같은데 혹시 어떻게 이해를 하면 좋을지.. 궁금합니다..!
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
3번문제
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]문제와 풀이 3번문제 선생님 풀이와 다르게 마지막 else 부분을 이렇게 작성했는데 이것도 정답이 될 수 있을까요? public class Ex3 { public static void main(String[] args) { int dollar = 5; if (dollar < 0) { System.out.println("잘못된 금액입니다."); } else if (dollar == 0) { System.out.println("환전할 금액이 없습니다."); } else { System.out.println("환전금액은 " + dollar*1300 + "원입니다." );
-
해결됨김영한의 실전 자바 - 기본편
println() 오류
java-basic 프로젝트를 생성했을 때 println()이 빨간색으로 되면서 실행이 안되었는데file-project structure-Modules-Dependencies에 들어가서 openjdk-21을 클릭하고 OK를 클릭하니 실행이 되는데 제가 해결한 방법이 옳은 방법인가요?
-
미해결김영한의 실전 자바 - 중급 1편
메인 함수 와 지역 클래스 간의 처리 순서 문의
해당 영상 문제처럼 LocalOuterV1 클래스 안에 localPrinter 클래스가 지역 클래스?등이 존재해도 main 함수가 아래 나오면 메인 함수로부터 프로그램이 우선으로 실행된다 생각 했는데 그거랑 상관없이 위에서 순서대로 결과가 나오나요?해당 문제의 동작 순서가 어떻게 될까요..?
-
미해결김영한의 실전 자바 - 중급 2편
혹시 고급편은 언제 나오는 지 알 수 있을까요?
스프링을 공부하다가 람다, 스트림에 대한 학습이 부족해서 막혔는데 혹시 고급 편 강의가 언제 나올 수 있을지 대략적이라도 알 수 있을까요?... 다른 시중 강의를 구매하고 볼지 아니면 김영한 님 강의를 기다릴지 고민입니다
-
해결됨김영한의 실전 자바 - 기본편
업캐스팅과 다운캐스팅
업캐스팅처럼 문제가 발생할 가능성이 없다. 즉, 안전하다 -> 코드를 생략해도 자바가 컴파일과정에서 코드를 추가해준다. 왜? 추가하더라도 안전하니까다운캐스팅처럼 문제가 발생할 가능성이 조금이라도 있다. 즉 안전하지 않다 -> 코드를 생략하면 자바가 코드를 추가해주지 않는다. 왜? 추가해서 혹시라도 문제가 발생하면 자바 책임이 되니까 -> 즉, 개발자가 직접 명시해야 한다. -> 명시하지 않으면 컴파일 오류, 명시하면 컴파일 성공 -> 컴파일 성공해서 실행중에 런타임 오류가 발생하지 않으면 괜찮지만, 런타임 오류가 발생하면 코드를 직접 명시한 개발자 책임이 된다.이 부분이 헷갈려서 정리해 봤는데, 이렇게 이해하는게 맞을까요?
-
미해결김영한의 실전 자바 - 기본편
접근제어자 쇼핑카트 문제 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]이해한 내용이 맞는지 확인하고자 몇가지 질문드립니다.1) 아래 코드의 items[itemCount] = item; 는 item 인스턴스의 참조값을 items[itemCount]에 복사해서 넣어주는 것인가요? public void addItem(Item item){if(itemCount >= items.length){System.out.println("더이상 제품을 담을 수 없습니다."); return; }items[itemCount] = item; itemCount++; }2) displayItems() 메서드와 totalAmount() 메서드의 for문 안에는 모두 공통적으로 Item item = items[i]가 사용됩니다. 이 부분에 대해 질문이 있습니다. 2-1) Item item 부분을 일종의 배열 참조값 저장을 위한 임시 변수라 생각하면 될까요? 참조값을 인스턴스에 저장하는 것은 아닌지 질문드립니다.2-2) 다른 메서드의 for 문 안에서 Item item을 두 경우 다 사용할 수 있는 것이 한 메서드가 실행 종료되면 해당 변수가 사라지기 때문인가요?public void displayItems() {System.out.println("장바구니 상품 출력"); for (int i = 0; i <= items.length; i++) {Item item = items[i]; System.out.println("상품명:" + item.getName() + ", 합계:" + item.getPrice()); }System.out.println("전체 가격 합:" + totalAmount()); }private int totalAmount(){int totalPrice = 0; for (int i = 0; i <= itemCount; i++) {Item item = items[i]; totalPrice += item.getPrice(); }return totalPrice; }}
-
해결됨Readable Code: 읽기 좋은 코드를 작성하는 사고법
메서드 네이밍 관련해서 질문있습니다!
안녕하세요! 강의 너무 잘 듣고 있습니다!개발을 진행하면서 항상 네이밍 관련된 부분이 정말 어려운거 같네요ㅜㅜ추상화 레벨 파트를 수강하다가 궁금한 점이 있어서 질문드립니다! 같은 boolean형을 반환하는 메서드인데 doesUserWinTheGame()처럼 doesXxx()와, isAllCellIsOpened()처럼 isXxx() 두 가지 형태를 사용하셨는데, 주로 어떤 상황에서 does를 사용하시고, is를 사용하시는지 궁금해서 질문드립니다!
-
미해결김영한의 실전 자바 - 중급 1편
자바 고급강의
자바 고급강의는 언제나오나요?