묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 중급 1편
지역 클래스 인스턴스 생성 전에 지역변수의 값 변경
public class LocalOuterV4 { public Printer process(int paramVar) { int localVar = 1; class LocalPrinter implements Printer { @Override public void print() { System.out.println("localVar = " + localVar); // 지역클래스가 접근하는 지역변수 (1) System.out.println("paramVar = " + paramVar); // 지역클래스가 접근하는 지역변수 (2) } } paramVar = 20; localVar = 10; Printer printer = new LocalPrinter(); // 지역 클래스의 인스턴스를 생성할 때, 지역 클래스가 사용하는 지역변수를 캡쳐해서 멤버로 포함시킨다. return printer; } }위 코드와 같이 LocalPrinter 인스턴스를 생성하기 전에 paramVar와 localVar의 값을 수정하려고 했습니다. 그러면 지역변수 캡쳐 전이니까 2, 1이 아닌 바뀐 20, 10을 캡쳐해서 지역 클래스의 인스턴스에 포함시키면 되겠다고 생각했습니다.그런데, paramVar와 localVar의 값을 수정하는 코드를 new LocalPrinter()의 이후에 적든, 이전에 적든에 관계없이 컴파일 오류가 발생합니다.제가 생각한 이유는 이미 자바 차원에서, 지역클래스가 사용 중인 지역변수는 값이 바뀌는 것 자체를 막아두었기 때문이라고 생각합니다. 제 생각이 맞는지 알려주시면 감사하겠습니다
-
미해결실전! 스프링 데이터 JPA
ID에 @GeneratedValue를 적용하지 않았는데 강의처럼 동작하지 않습니다.
@Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Item { @Id private String id; public Item(String id) { this.id = id; } } public interface ItemRepository extends JpaRepository<Item, String> { } @SpringBootTest class ItemRepositoryTest { @Autowired ItemRepository itemRepository; @Test void save() { Item item = new Item("A"); itemRepository.save(item); } } 위와 같이 강의를 따라서 테스트 코드를 작성했습니다. 그런데디버깅 찍은 곳을 확인해보니Member(id=null, username=user0, age=0)이렇게 나왔습니다. 분명 생성자에서 Item의 id를 "A"로 세팅했는데 어디서 문제가 생긴걸까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.> Task :compileJava FAILEDC:\Users\adong\Documents\GitHub\spring-study-inflearn\springboot & jpa1\jpashop\src\main\java\jpabook\jpashop\domain\OrderItem.java:4: error: package jpabook.jpashop.domain.item does not existimport jpabook.jpashop.domain.item.Item; ^C:\Users\adong\Documents\GitHub\spring-study-inflearn\springboot & jpa1\jpashop\src\main\java\jpabook\jpashop\domain\OrderItem.java:20: error: cannot find symbol private Item item; ^ symbol: class Item location: class OrderItemC:\Users\adong\Documents\GitHub\spring-study-inflearn\springboot & jpa1\jpashop\src\main\java\jpabook\jpashop\domain\OrderItem.java:31: error: cannot find symbol public static OrderItem createOrderItem(Item item, int orderPrice, int count) { //item에 price가 있지만, 할인 가격일 수 있어서 orderPrice로 따로 사용 ^ symbol: class Item location: class OrderItemC:\Users\adong\Documents\GitHub\spring-study-inflearn\springboot & jpa1\jpashop\src\main\java\jpabook\jpashop\domain\OrderItem.java:20: error: cannot find symbol private Item item; ^ symbol: class Item location: class OrderItemC:\Users\adong\Documents\GitHub\spring-study-inflearn\springboot & jpa1\jpashop\src\main\java\jpabook\jpashop\domain\OrderItem.java:11: error: cannot find symbol@Getter @Setter ^ symbol: class Item location: class OrderItemC:\Users\adong\Documents\GitHub\spring-study-inflearn\springboot & jpa1\jpashop\src\main\java\jpabook\jpashop\service\OrderService.java:7: error: package jpabook.jpashop.domain.item does not existimport jpabook.jpashop.domain.item.Item; ^6 errors이렇게 자꾸 Item을 인식하지 못하는거 같은데, 계속 봐도 오타가 안보입니다.. 도와주세요..구글 드라이브에 코드 업로드해두었습니다.https://drive.google.com/file/d/1Sj8eAPexXkQJ5livmAq_BaTAXaTSd_zu/view?usp=sharing
-
미해결실전! 스프링 데이터 JPA
트랜젝션 옵션의 전파에 대해 질문드립니다.
예전에 영한님이 답변하신 내용 중에스프링이 제공하는 트랜잭션은 처음 시작한 트랜잭션을 기반으로 전파됩니다.그러니까 서비스에서 트랜잭션을 시작하면 리포지토리의 트랜잭션이 해당 트랜잭션을 그대로 이어 받습니다.라는 내용이 있었습니다.그렇다면, 컨트롤러, 서비스, 리포지토리 순으로 코드가 진행된다고 할 때, 만약 서비스 계층에 @Trasnactional(readonly=false)가 걸려있고 리포지토리 계층에 @Trasnactional(readonly=true)가 걸려있으면 서비스 계층이 먼저 호출되므로 readonly=false 옵션이 적용된 채로 리포지토리 계층까지(기존 리포지토리 계층의 옵션은 무시된채로) 코드가 흘러가는걸까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
세팅 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.https://drive.google.com/file/d/1Djxk3OiXF9ALDQpWDbr1K3yH7aeaehlu/view?usp=drive_link 시작 초기에 build.gradle이랑 jpashopapplication을 돌렸을 때, Exception java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.reflection.ReflectionCache [in thread "Daemon worker"] Could not create an instance of type ijmapper_2lopa9aslcq9lq2pwmglefwkb.> Could not initialize class org.codehaus.groovy.runtime.InvokerHelper* 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. 이런 에러가 2개떠서 더이상 진행하지 못하는 상황입니다. 혹시 해결법 알 수 있을까요?
-
미해결김영한의 실전 자바 - 중급 1편
인스턴스 간 참조관계
public class InnerOuterMain { public static void main(String[] args) { InnerOuter outer = new InnerOuter(); InnerOuter.Inner inner = outer.new Inner(); } }내부 클래스에 대한 인스턴스는 바깥 클래스에 대한 인스턴스를 가지고 있습니다. 그렇지만 바깥 클래스의 인스턴스는 내부 클래스의 인스턴스를 가지고 있지 않은게 맞나요? 바깥 클래스인 InnerOuter 내에 메서드를 만들고, 내부 클래스가 가진 변수에 접근하는 코드를 작성하니 cannot find symbol이 뜨긴 했습니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA repository질문입니다.
JPA repository를 public interface MemberRepository extends JpaRepository<Member, Long> { } 이런식으로 사용하면 기본적인 crud가 된다고 구글링하다가 알게됐습니다.아직 선생님 수업을 다 듣지 못했지만 이런식으로 사용하지않는걸로아는데 save() 레코드 저장 (insert, update) findOne() primary key로 레코드 한건 찾기 findAll() 전체 레코드 불러오기. 정렬(sort), 페이징(pageable) 가능 count() 레코드 갯수 delete() 레코드 삭제이렇게사용하면 em.persist 처럼 사용안하고 그냥 save만 불러서 쓸수이ㅣㅆ는거아닌가요?제가 아직 잘몰라서 ㅠㅠ햇갈립니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
세팅 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. https://drive.google.com/file/d/13uBXfVIbf-eYNNi0rG_paNywzx65M4CI/view?usp=drive_link 시작 초기에 build.gradle이랑 jpashopapplication을 돌렸을 때, Exception java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.reflection.ReflectionCache [in thread "Daemon worker"] Could not create an instance of type ijmapper_2lopa9aslcq9lq2pwmglefwkb.> Could not initialize class org.codehaus.groovy.runtime.InvokerHelper* 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. 이런 에러가 2개떠서 더이상 진행하지 못하는 상황입니다. 혹시 해결법 알 수 있을까요?
-
미해결김영한의 실전 자바 - 기본편
제어자2번 문제 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에서 item.getName()은 클래스 Item의 메서드인데 클래스 ShoppingCart에서는 따로 인스턴스를 만들지 않았고 배열인 Item[] items = new Item[10]; 만 만든게 아닌가요? items.getName() 도 아니고 어떻게 호출이 되는지 이해가 안가서 질문 남깁니다
-
미해결실습으로 배우는 선착순 이벤트 시스템
consumer 셋팅 숫자 출력이 안됩니다.
docker exec -it kafka kafka-console-consumer.sh --topic coupon_create --bootstrap-server localhost:9092 --key-deserializer "org.apache.kafka.common.serialization.StringDeserializer" --value-deserializer "org.apache.kafka.common.serialization.LongDeserializer"라고 터미너에 입력한 후에 테스트 코드package com.example.coupon_server.service; import com.example.coupon_server.repository.CouponRepository; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; @SpringBootTest public class ApplyServiceTest { @Autowired private ApplyService applyService; @Autowired private CouponRepository couponRepository; @Test @DisplayName("쿠폰 한개 적용 테스트") public void applyOneCoupon() { applyService.applyCoupon(1L); long count = couponRepository.count(); assertThat(count).isEqualTo(1); } @Test @DisplayName("쿠폰 여러개 적용 테스트") public void applyMultiCoupon() throws InterruptedException { int threadCount = 1000; ExecutorService executorService = Executors.newFixedThreadPool(32); CountDownLatch latch = new CountDownLatch(threadCount); for (int i = 0; i < threadCount; i++) { long userId = i; executorService.submit(() -> { try { applyService.applyCoupon(userId); } finally { latch.countDown(); } }); } latch.await(); Thread.sleep(10000); long count = couponRepository.count(); assertThat(count).isEqualTo(100); } @Test @DisplayName("한명당 한개의 쿠폰만 발급") public void applyOneCouponPerUser() throws InterruptedException { int threadCount = 1000; ExecutorService executorService = Executors.newFixedThreadPool(32); CountDownLatch latch = new CountDownLatch(threadCount); for (int i = 0; i < threadCount; i++) { long userId = i; executorService.submit(() -> { try { applyService.applyCoupon(1L); } finally { latch.countDown(); } }); } latch.await(); Thread.sleep(10000); long count = couponRepository.count(); assertThat(count).isEqualTo(1); } }로 작성했지만 터미널에서 강사님과 같이 숫자들이 찍히자 않습니다.그리고 터미널 안의 글씨 너무 작은것 같아요
-
미해결김영한의 실전 자바 - 중급 1편
static 관련 질문 드립니다.
안녕하세요. 제가 궁금했던 부분은 아래와 같이 static 변수와static 클래스가 있을 때 차이점입니다.public class MyMainClass {public static string test = "test";}public class OuterClass { public static class StaticNestedClass {}public static 이 변수에 붙으면 서비스전체에서 동일한 변수에 접근을 한다고 이해했는데StaticNestedClass 클래스 같은 경우는 서비스에서 필요할때마다 생성을 해서 여러개가 존재할 수 있는거 아닌가요?public static = 시스템 전체에서 같이 사용하는 자원?이라고 이해한 부분이 잘못된거 같아서 어떻게 이해하면 될지 문의드렸던 부분입니다.
-
미해결실습으로 배우는 선착순 이벤트 시스템
멀티 모듈
프로젝트 나누신것 같은데그냥 최상단 경로에서 프로젝트 하나 더 생성하고 난뒤에최상단에서 열면 되는건가요 ?
-
미해결김영한의 실전 자바 - 중급 1편
바깥 인스턴스만 생성하는 경우
InnerOuter outer = new InnerOuter(); InnerOuter.Inner inner = outer.new Inner();바깥 클래스와 내부 클래스의 인스턴스를 각각 생성하는 코드입니다. 만약 위 코드에서 두 번째 코드 없이 첫 번째 코드만 작성한다면 아래 그림에서 바깥 인스턴스의 참조를 보관하는 곳에 null이 저장되는 건가요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
MemberApiControllerv1질문있습니다.
package jpabook.jpashop.domains; import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; //import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String name; @Embedded private Address address; @JsonIgnore @OneToMany(mappedBy = "member") private List<Order> orders = new ArrayList<>(); } @RequiredArgsConstructor @RestController public class MemberApiController { private final MemberService memberService; @PostMapping() public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member){//jason데이터를 멤버로 쫙 바꿔줌(맵핑해줌_)) Long id = memberService.join(member); return new CreateMemberResponse(id); } @Data static class CreateMemberResponse{ private Long id; public CreateMemberResponse(Long id) { this.id = id; } } }class Member에 getter,setter가 들어가 있는데 class MemberApiController에 왜 아래처럼 생성자를 생성해주는건가요? public CreateMemberResponse(Long id) { this.id = id; }2. save함수는 아래에도 있는데 굳이 saveMemberV1 할 이유가 있나요? 혹시 api를 만들때는 엔티티매니저가 사용이 안되나요?public class MemberRepository { // @PersistenceContext//스프링이 엔티티 매니저를 만들면서 주입시켜주게 됨. private final EntityManager em; public void save(Member member) { em.persist(member); }3 해당 강의에서 중간중간에 엔티티를 변경 즉 name->username으로 변경 시 api오류가나온다고 하셨는데요. 그런데 아래 코드 v1버전 중 CreateMemberResponse 매개변수에Member member가 주어지는데요. 생성자인 CreateMemberResponse(Long id)가 id만 받아와 지는데, 이 id가 (name이 아닌 id만 받아옴) member의 id기준으로 member의 전체 객체가 받아와져서 그러는건가요?package jpabook.jpashop.api; import jakarta.validation.Valid; import jpabook.jpashop.Service.MemberService; import jpabook.jpashop.domains.Member; import lombok.Data; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @RequiredArgsConstructor @RestController public class MemberApiController { private final MemberService memberService; @PostMapping("/api/v1/members") public CreateMemberResponse saveMemberV1(@RequestBody @Valid Member member){//jason데이터를 멤버로 쫙 바꿔줌(맵핑해줌_)) Long id = memberService.join(member); return new CreateMemberResponse(id); } @PostMapping("/api/v2/members") public CreateMemberResponse saveMemberV2(@RequestBody @Valid CreateMemberRequest request){ Member member=new Member(); member.setName(request.getName()); Long id=memberService.join(member); return new CreateMemberResponse(id); } @Data static class CreateMemberRequest{ private String name;//<-강의 중반주에 adreess넣을지 말지 하는 부분이 있었는데요. 만약 adress를 넣는다면, member.setadress(request.getadress());를 안넣게되면 에러인가요? } @Data static class CreateMemberResponse{ private Long id; public CreateMemberResponse(Long id) { this.id = id; } } }.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
피라미드 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제 피라미드는 안 생성되고 위아래로 나옵니다 ..
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
java -jar -jpashop-0.0.1-SNAPSHOT.jar 관련질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]java -jar 파일을 이용해 스프링을 구동하려고 build로 경로를 바꿨는데 해당 라이브러리가 없으면libs 라이브러리를 따로 만들어야 하는지 아니면 그냥 넘어가도 되는지 궁금합니다.따로 생성시키는 방법이 있을까요?
-
미해결김영한의 실전 자바 - 중급 1편
private 선언된 내부 중첩 클래스
저는 내부 중첩 클래스가 private으로 선언된 경우 바깥 클래스를 포함한 모든 외부 클래스가 내부 중첩 클래스에 접근할 수 없는 줄 알았습니다. 왜냐면 바깥 클래스와 내부 중첩 클래스는 무관한 클래스라고 들었던 것 같기 때문입니다. 그런데, 바깥 클래스에서 내부 중첩 클래스의 인스턴스를 생성하고, 내부 중첩 클래스에 접근할 수 있는 이유는 무엇인가요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2데이터베이스 테이블생성 질문입니다.
h2데이터베이스 생성하고 간단하게 member클래스를 생성해서 h2데이터베이스에서 Member 테이블이 생성되는것을 보려고하는데 코드상으로는 create table로 생성되었다고 뜨는데 db에는 테이블이 생성이안되어있습니다 ㅠㅠ이유가뭘까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
failed to lazily initialize a collection of role 에러질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]컨트롤러@RestController @RequestMapping("/api/members") @RequiredArgsConstructor @Slf4j public class PetController { private final PetService petService; @PostMapping("/pets") @PreAuthorize("isAuthenticated()") public ResponseEntity<Long> createPet( @RequestBody PetCreateRequestDto petCreateRequestDto, @AuthenticationPrincipal PrincipalDetails principalDetails){ Member member = principalDetails.getMember(); Long savedId = petService.addPetToMember(petCreateRequestDto, member); return ResponseEntity.ok(savedId); } } 서비스@Service @RequiredArgsConstructor public class PetService { private final PetRepository petRepository; @Transactional public Long addPetToMember(PetCreateRequestDto request, Member member) { Pet pet = Pet.builder() .nickname(request.nickname()) .gender(request.gender()) .age(request.age()) .photoUrl(request.photoUrl()) .description(request.description()) .likesCount(0) .region(request.region()) .neighborhood(request.neighborhood()) .build(); pet.setPetOwner(member); Pet savePet = petRepository.save(pet); return savePet.getId(); } }연관관계 편의 메서드(Pet 엔티티에 있음)public void setPetOwner(Member member){ this.member = member; member.getPets().add(this); // 해당 코드에서 오류발생 }해당 코드에서 failed to lazily initialize a collection of role: com.gdsc.petwalk.domain.member.entity.Member.pets: could not initialize proxy - no Session가 발생하는 이유가 뭘까요?제가 하고싶었던 건 member를 먼저 만들고, 1:N에서 N쪽인 pet에 member를 add해주고 save하면 될거라 생각했는데 아무리 생각해봐도 모르겠네요... Pet에서 Member는 @ManyToOne(fetch = FetchType.LAZY)입니다
-
미해결김영한의 실전 자바 - 중급 1편
정적 중첩 클래스 개념 질문
'정적 중첩 클래스가 인스턴스에 속하지 않는다'는 뜻은 static 변수가 인스턴스에 속하지 않는다와는 다른 의미인게 맞을까요? 즉, static 변수는 인스턴스에 속하지는 않지만 해당 클래스에 포함됩니다. 그러나 정적 중첩 클래스는 인스턴스에 속하지 않을 뿐만 아니라 해당 클래스(바깥 클래스)와 무관하다고 하셔서 질문드립니다.정적 중첩 클래스 vs 내부 클래스가 static 변수 vs 인스턴스 변수와 같이 둘 다 클래스에 포함되지만 static 변수는 인스턴스에 포함되지 않는다는 뜻인지, 아니면 정적 중첩 클래스가 바깥 클래스에 포함되지 않는, 바깥 클래스와 전혀 무관한 클래스인지 알고 싶습니다.