묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 기본편
this 와 super의 호출 순서는 부모-자식관계 떄문만인가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의를 듣다가 궁금한 부분이 있어 질문 드립니다. this 와 super의 호출 순서는 왜 중요한가요?개념으로 이해하기에는 부모에 해당하는 super가 있어야 자식에 해당하는 this 를 호출할 수 있다고 생각하고 있습니다. top -down으로 이해하고 있는데 이것외에도 중요한 이유가 있을까요?
-
해결됨오브젝트 - 기초편
6-1. 변경과 설계 마지막 추상화 관련 질문 입니다.
안녕하세요.이번에 설계의 관점에서의 배움을 위해 강의를 듣고 있습니다.실 생활(영화) 의 예시로 알려주셔서 이해하고, 생각해보는데 도움이 되고 있습니다. 6-1 강의 마지막에 추상화를 변경이 일어날 것을 미리 추측하여 만들지 말고 간단하게 하는 것이 좀더 나은것 같다고 이야기 해주셨는데요.이부분에 대해서 현 영화의 예시로 본다면, 할인 정책이 만약 정액재 (금액 할인) 정책만 존재한다면정책 인터페이스를 만들 필요 없이 금액 정책 클래스만 만들어 활용하는게 더 좋다는 의미로 이해했습니다. 이렇게 말씀해주신 이유를 생각해보았는데, 추상화를 활용해 message 만 일치한다면 다양한 방식의 정책을 동적으로 활용할 수 있다는 장점이 있습니다. 다만 코드의 동작 분석에 있어 실제 runtime 단계에서 어떤 구현체가 사용되는지 확인 해야 하는 어려움이 있기 때문에 위와 같이 말씀 에 동의할 수 있는거 같습니다. 만약, 변경이 일어날 것을 추측이 아닌 실제로 일어나게 된다면 최소 몇개의 변경이 있어야 ( Ex ) 정책이 3개 ) 추상화를 하는게 좋다는 강사님만의 기준이 있을까요??
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
자원 정리시 에러가 발생 했을 때 메모리 상황 및 실무에서 로그 확인 방법
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 안녕하세요 강의 잘 듣고 있습니다. 자원정리에 대한 강의를 듣던 와중에 OS단의 메모리 상황과 실무에서 처리 방법이 궁금하여 질문드립니다. [질문 내용]강의 내용 자원 정리를 하다가 나는 에러 (CloseException) 등에 대해선 try-catch로 잡은 뒤, log만 남긴 뒤 무시하고 있음 궁금한 점 자원 정리를 하다가 에러가 나면 자원이 정리가 안된 채로 메모리에 남아있을 것 같습니다. 이를 추후 로그를 확인하고 일괄 수동 정리 처리를 하는지, 아니면 보통 자원마다 동작 타임 같은 게 설정되어 있어서 자동으로 정리되기 때문에 신경쓰지 않고 넘어가는지 궁금합니다. 만약 첫번째 질문에서 추후 로그를 확인하고 일괄 수동 정리 처리를 하는게 맞다면, 자원정리 도중 뜬 에러 관련한 것만 로그에서 추출해서 확인한다던지 어떤 방식으로 로그에서 필요한 내용만을 효율적으로 확인해서 처리하는지 궁금합니다. (참고로 이전에 김영한님 강의에서 Logger를 AOP를 이용해 남겨 양식을 통일화 시키고 레벨을 통해 효율적으로 확인하는 방법은 확인하였습니다.)
-
해결됨유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
구글 AD 미디에이션
미디에이션을 구현하는 방법이나 방법이 잘 설명이 되어있는 주소를 알려주세요
-
미해결TS/JS 디자인 패턴 with Canvas: 제로초에게 제대로 배우기
[프론트엔드 문서화 관련 질문]
안녕하세요, 제로초님.프론트엔드 문서화 관련하여 질문을 드릴 게 있습니다.저희 회사에서 단기간에 규모가 큰 프로젝트를 진행하다보니 AI의 도움을 빌려 만들기는 만들었는데 문서화가 제대로 되지 않은 상태입니다.최근 한 명의 백엔드 개발자가 프론트엔드도 함께 개발을 하게 되어 문서화의 필요성을 느끼고 있는데, 문서화에 대한 경험이 없어 제로초님께 여쭤봅니다.현재 폴더 구조는 FSD를 채택하여 개발 중입니다.구상중인 것은 Slice 단마다 문서를 만드려고 하는데,해당 Slice에 포함된 파일의 사용 방식(API input값, output 값 등)에 대해 작성하고, store(zustand)에 저장된 값을 적고, ui에서 필요한 정보값들에 대해서도 적어보려고 합니다.이렇게 모든 폴더에 정리하게 된다면 못해도 50개가 넘는 문서가 만들어지게 될텐데, 괜찮은 방법인지 확신하지 못하겠네요.(현재 회사에 있는 개발자분들은 딱히 관심이 없어보이십니다ㅠ)제로초님이라면 해당 문서에 어떤 내용을 담으실지 궁금합니다.그리고 프로젝트 전체를 소개하는 문서에는 Tech Stack, 프로젝트 구조 이외에 어떤 항목을 넣는 것이 좋을지도 궁금합니다.이 수업에서 배운 디자인패턴에 대해서도 작성하는 것이 좋을까요?
-
미해결김영한의 실전 자바 - 기본편
팩토리 메서드 패턴과 일반 생성자 사용의 장단점
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]기본형과 참조형 - 참조형과 메서드 호출 - 활용 강의 자료 보고 생긴 궁금증입니다!자바에는 객체 생성 시 초기화를 담당하는 "생성자(Constructor)"가 있는데, createStudent()와 같은 팩토리 메서드 패턴과 일반 생성자를 사용하는 것의 장단점이나, 어떤 상황에 어떤 방법을 사용하는 것이 더 적절한지 궁금합니다!
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
synchronized 와 인스턴스의 lock
[질문 내용]이 부분을 보면 synchronized 메서드를 호출하려면 인스턴스의 lock이 필요하다고 되어잇는데, 헷갈리는 부분이 있습니다인스턴스는 메서드 단위가 아닌, 클래스 단위로 존재하는거라고 알고 있는데, 그러면 지금 synchronized 된 메서드 하나를 호출하면 해당 클래스 전체에 Lock 이 발생한다(다른 스레드는 접근하지 못한다)는 개념으로 이해가 되는데 이렇게 동작하는게 맞는건지 궁금합니다
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
data class와 자바의 Lombok을 이용한 DTO 클래스 차이 질문
안녕하세요. 좋은 강의를 제공해주셔서 감사합니다. 현재 코틀린과 자바를 함께 사용하는 프로젝트를 준비 중입니다.그 과정에서 DTO를 구현할 때, 코틀린에서는 data class라는 매우 편리한 기능이 있다는 것을 알게 되었고, 이와 관련해서 질문이 있습니다.궁금한 점은,실무(특히 스프링 기반 개발)에서는 DTO를 작성할 때 자바의 Lombok을 주로 사용하는지, 아니면 코틀린의 data class를 더 많이 사용하는지입니다.또한, 두 방식의 차이점과 선택 기준에 대해서도 알고 싶습니다.감사합니다!
-
해결됨김영한의 실전 자바 - 중급 2편
실프로젝트에서 Java25버전 사용
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의에서는 Java 21버전을 사용하고, 현재 최신 LTS 버전은 25입니다.실무에서는 21버전을 계속 사용하다가 25버전이 안정화되면 25버전을 사용하나요?아니면 22, 23, 24 바로 업데이트 하는 경우가 많을까요?
-
해결됨오브젝트 - 기초편
객체 지향 설계 원칙에 대한 질문입니다
안녕하세요!객체 지향에 대해 깊이 있게 학습할 수 있는 좋은 강의를 만들어주셔서 감사합니다. 이번에 완강했는데, 복습을 시작하기 전에 강의를 들으면서 생겼던 궁금증을 먼저 풀고 복습을 진행하면 좋을 것 같아 질문을 드립니다! '협력에 필요한 행동을 먼저 결정하고 행동에 적합한 객체를 나중에 선택하라'는 원칙이 궁금합니다. 협력을 설계하려면 협력할 대상이 필요할 텐데, 협력 대상인 객체는 나중에 선택한다면, 협력을 설계할 때는 구체적으로 무엇을 대상으로 삼아서 진행하게 되는걸까요? 요구사항 분석에서 도출된 도메인 개념이나 역할 같은 것들을 임시 대상으로 두고 협력을 설계하는 걸까요?제가 설계 회의 경험이 별로 없어서 그런지 설계가 진행되는 일련의 과정이 머릿속에 잘 그려지지 않아 이해를 잘 못하고 있는 것 같습니다. 객체 지향 설계(코드 배치 방법) 이전에 진행되는 사전 설계 작업에서 도출된 도메인 모델이 중심이 된다고 보면 될까요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
While과 for 스코프 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]While과 for의 변수를 스코프 할때 While 안에서 변수를 선언 할 수는 없는 건가요??
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
synchronized 키워드만으로 메모리 가시성이 해결되는 이유가 궁급합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]synchronized 키워드를 사용하면 내부적으로 캐시 메모리에 있는 데이터를 메인 메모리에 값을 동기화 시켜주는 걸까요?
-
해결됨김영한의 실전 자바 - 중급 1편
지역 클래스 - 지역 변수 캡처3
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (아니오)[질문 내용]지역 클래스는 기능상 이해는 되지만, 실제로 코드 작성 시에는 가독성이 떨어진다고 느껴집니다. 실무에서 많이 쓰이는 걸까요?
-
미해결코틀린 함수형 프로그래밍 - 입문편
git 업로드 가능한가요?
강의 들으며 학습하는 내용(강의 관련 코드)를 개인 git에 업로드 하여도 되나요?
-
해결됨유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
구글로그인 인증 에러 문제 살려주세요 ㅠㅠ
DllNotFoundException: Unable to load DLL 'native-googlesignin'. Tried the load the following dynamic libraries: Unable to load dynamic library 'native-googlesignin' because of 'Failed to open the requested dynamic library 처음에 강의를 따라하다가 에러가 떠서 Q&A내용들 확인하고 동일한 에러가 있는걸 발견하고 따라했습니다. https://github.com/googlesamples/google-signin-unity/issues/106 이 깃허브 내용도 확인했습니다. 깃허브 및 Q&A 내용대로 1.srcarr -> arr로 변경하고 2. .arr파일에서 android 체크edm4u resolve (깃허브에는 ./Plugins/Andoid/ 산하에 .jar파일들이 생성된다고했는데 전 안됬습니다.) 진행했습니다. 그러니까 이번에는 로그캣에 61페이지 분량 크래시 로그가뜨면서 종료되는데 혹시 어떻게 해봐야할까요? 2025-10-08 23:26:35.716 21847 21879 Fatal tSoft.MyProject java_vm_ext.cc:616] JNI DETECTED ERROR IN APPLICATION: mid == null2025-10-08 23:26:35.716 21847 21879 Fatal tSoft.MyProject java_vm_ext.cc:616] in call to CallStaticVoidMethodV2025-10-08 23:26:35.716 21847 21879 Fatal tSoft.MyProject java_vm_ext.cc:616] from boolean com.unity3d.player.UnityPlayer.nativeRender()2025-10-08 23:26:35.776 21847 21879 Warn tSoft.MyProject sched_getscheduler(22014): No such process2025-10-08 23:26:35.776 21847 21879 Warn tSoft.MyProject sched_getparam(22014, &sp): No such process2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] Runtime aborting...2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] Dumping all threads without mutator lock held2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] All threads:2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] DALVIK THREADS (41):2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] "main" prio=10 tid=1 Native2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] | group="" sCount=1 ucsCount=0 flags=1 obj=0x72cfd3a8 self=0xb4000079b91d37b02025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] | sysTid=21847 nice=-10 cgrp=top-app sched=0/0 handle=0x7c82484d282025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] | state=S schedstat=( 334617993 29619772 266 ) utm=22 stm=11 core=6 HZ=1002025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] | stack=0x7fcbb05000-0x7fcbb07000 stackSize=8188KB2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] | held mutexes=2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] native: #00 pc 000bd788 /apex/com.android.runtime/lib64/bionic/libc.so (__epoll_pwait+8) (BuildId: 3549de9a967b5089252c4ca16436800c)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] native: #01 pc 00010fa0 /system/lib64/libutils.so (android::Looper::pollOnce+216) (BuildId: 880c071958aa3788bc08025b2e2bae17)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] native: #02 pc 0018e6b4 /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce+44) (BuildId: 2e949cb5813b36a6c68d06191a1b108e)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] at android.os.MessageQueue.nativePollOnce(Native method)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] at android.os.MessageQueue.next(MessageQueue.java:346)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] at android.os.Looper.loopOnce(Looper.java:214)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] at android.os.Looper.loop(Looper.java:342)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] at android.app.ActivityThread.main(ActivityThread.java:9634)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] at java.lang.reflect.Method.invoke(Native method)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:619)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:929)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] 2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] "FinalizerDaemon" prio=5 tid=6 Waiting2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] | group="" sCount=1 ucsCount=0 flags=1 obj=0x2b40378 self=0xb4000079b91d53802025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] | sysTid=21854 nice=4 cgrp=top-app sched=0/0 handle=0x793cf585f02025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] | state=S schedstat=( 3540231 0 2 ) utm=0 stm=0 core=3 HZ=1002025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] | stack=0x793cb55000-0x793cb57000 stackSize=4109KB2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] | held mutexes=2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] native: #00 pc 0008029c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) (BuildId: 3549de9a967b5089252c4ca16436800c)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] native: #01 pc 00201230 /apex/com.android.art/lib64/libart.so (art::ConditionVariable::WaitHoldingLocks+136) (BuildId: eb4ec0f1d1c7267591d83fa87cb36390)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] native: #02 pc 004af4ec /apex/com.android.art/lib64/libart.so (art::Monitor::Wait+1088) (BuildId: eb4ec0f1d1c7267591d83fa87cb36390)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] at java.lang.Object.wait(Native method)2025-10-08 23:26:35.901 21847 21879 Fatal tSoft.MyProject runtime.cc:709] - waiting on <0x0654f29f> (a java.lang.Object)
-
미해결홍정모의 게임 만들기 연습 문제 패키지
깃허브에서 받은 코드가 왜 강의코드랑 다를까요
예제 깃허브에서 강의받으면 lecture 1이 이렇게 열리는데, 실제 저 jm이란 거가 main에 아무것도 안들어있는데 네임스페이스 안에 있는 게 실행되네요 시작하자마자 이렇게 자꾸 오류가 나요
-
해결됨오브젝트 - 기초편
[5-1] Screening과 Movie의 의존관계에 대한 궁금증 질문입니다.
안녕하세요! 추석에 좋은 강의 잘 듣고 있습니다!5-1 강의 3분 20분초에 보면 Screening은 프로퍼티로 movie를 가지게 되므로 Screening -> Movie의 의존성을 가지게 되는데요이때 Movie는 내부 구현에서 메서드의 파라미터로 Screening을 받는 구조에서 프로퍼티가 아닌 파라미터지만 Movie -> Screening의 의존이 생긴다고 볼 수 있지 않을까요?이렇게되면 Screening <-> Movie의 상호의존성이 생긴다고 볼 수 있을거 같은데 이러한 상호 의존도 괜찮나요?제가 사용하는 언어인 Swift에서는 코드의 양이 조금 늘어나더라도 이 경우 프로퍼티나 파라미터 둘 중에 하나를 프로토콜(인터페이스)로 변경해서 상호 의존성을 끊어주는 방식을 사용하는데 트레이드오프로 생각하고 같은 계층에 속한 모델의 경우 이정도의 상호 의존은 생겨도 놔둘것인지 이러한 중간 객체 추가로 상호의존을 끊을것인지 선택하면 되는걸까요?
-
해결됨김영한의 실전 자바 - 중급 2편
Arrays.sort
[질문 내용]MyUser에서 compareTo를 Override한 뒤Arrays.sort(array);System.out.println(Arrays.toString(array));을 했을때 나이 순으로 정렬이 되는데이게 어떻게 이렇게 되는건지 잘 이해가 되질 않습니다.sort가 내부에서 compareTo를 호출하고array가 MyUser타입이기 때문에 MyUser에서 Override한 compareTo를 호출하는건가요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
[스레드 풀과 Executor 프레임워크1][문제와 풀이] `log("일부 작업이 실패했습니다.");` 실행되는 경우가 있을까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.문제와 풀이 정답 코드에서if (inventoryResult && shippingResult && accountingResult) { log("모든 주문 처리가 성공적으로 완료되었습니다."); } else { log("일부 작업이 실패했습니다."); }else 블록이 실행되는 케이스가 있을까요?future.get() 했을 때의 결과가 모두 true가 나오거나 예외가 터져서 else 블럭은 실행되지 못하는 것으로 이해했습니다. 이렇게 이해한 것이 맞을까요?예제를 간결하게 하기 위해 예외 처리는 제외하셨다고 적어주셨는데 혹시 이와 관련된 부분일까요?
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
코틀린에서 상속 시, 주의점에 대한 질문
태현님, 안녕하세요. 뭔가 하나 더 궁금해져서 질문을 드리게 되었습니다!아래의 두 클래스가 있다고 가정해보겠습니다.package me.sungbin.lec10 open class Base( open number: String = "100", ) { init { println("Base Class") println(number) } }package me.sungbin.lec10 class Derived( override val number: String, ) : Base() { init { println("Derived Class") } }그리고 실제로 아래와 같이 Derived 클래스의 생성자를 호출하면 number값으로는 null이 출력됩니다. 여기서 궁금한 것은 number는 non-nullable한 타입인데 null이 왜 출력이 될까? 라는 궁금증이 생겼는데요..그래서 GPT한테 물어보니 아래와 같은 답변을 얻을 수 있었습니다.레퍼런스 타입(예: String) → JVM 기본값 null이 출력됩니다. (Kotlin의 Non-null 보장도 생성 중(super 생성자 실행 중)에는 예외적으로 깨질 수 있습니다.)이렇게 들으니 뭔가 이해가 된 듯 보이는데 이게 GPT 피셜이다보니 태현님의 의견이 듣고 싶어져서 질문을 남깁니다!