-
한 주마다 리딩을 하는 사람 한명이 있고, 책을 읽다가 모르는 점, 기록으로 남겨 두고 싶은 예제 등 자유로운 방식으로 이슈를 추가한다.
-
해당 이슈는 스터디 시간에 함께 살펴본다. 모두가 납득하면 close.
-
해결하지 못한 이슈는 stuck 처리한다.
studylog's Introduction
studylog's People
Forkers
donghyeon3813studylog's Issues
item26. 비한정적 와일드 카드의 사용 용도
비한정적 와일드 카드를 사용한 list에는 null밖에 넣을 수 없다고 합니다.
그렇다면 왜 사용하는지? 어느 상황에 이것이 필요한지에 대해서 알면 좋을 것 같습니다.
item28. 제네릭타입이 런타임에 타입소거가 일어나는 이유에 대해서
이유에 대해서 스터디 해봅시다.
item11.71p 코드 11-4에서 해시코드를 지연초기화 전략을 활용해서 구현해야 하는 이유?
코드 11-4 에 해시코드를 지연 초기화하는 전략으로 작성한 해시코드 메서드가 있는데, 왜 지연초기화를 해서 구현을 해야하는지에 대해서 토론 해보고싶습니다..!
item22. 140p 바이너리 호환성을 위해 여전히 상수 인터페이스를 구현하고 있어야 한다.
바이너리 호환성이란 무엇을 뜻하고 어떠한 이유에서 상수 인터페이스를 구현하고 있어야 한다고 하는 것일까요?
item34.필요한 원소를 컴파일 타임에 다 알수있는 상수 집합이란? (219페이지)
우선 "필요한 원소를 컴파일 타임에 다 알 수 있는 상수 집합이란" 말이 명확하게 이해가 되지않았고, 이야기를 하다보니, static final과 열거타입은 사용법은 유사한데, 특정 상수값을 여러 클래스에서 가져다 쓸때 열거타입을 써야한다고 이야기가 나왔습니다.
--> 그렇다면 static final 과 enum class의 컴파일 범위는 다른건가요?
item15. 99p 클래스에서 public static final 배열 필드를 두거나 이 필드를 반환하는 접근자 메서드를 제공해서는 안된다. 이런 필드나 접근자를 제공한다면 클라이언트에서 그 배열의 내용을 수정할 수 있게 된다.
해당 문구에서 클라이언트가 그 배열의 내용을 수정할 수 있게 된다고 나와있는데, 여기서 이야기하는 클라이언트가 어떤건지, 어떤식으로 수정을 할수있는건지 명확하게 이해가 안되서 이슈로 올립니다.
item07. 강한 참조와 약한 참조의 차이에 대해 명확하게 토론해보고싶습니다.
이론은 이해가 어느정도 갔는데, 테스트 코드를 다시 만들어봐야할거같습니다.
item47. 스트림과 컬렉션의 동작원리의 차이점은?
item19. 123p . 효율적인 하위 클래스를 큰 어려움 없이 만들수 있게 하려면 클래스의 내부 동작 과정 중간에 끼어들수 있는 훅(hook)을 잘 선별하여 protected 메서드 형태로 공개해야 할수도 있다
- public, default 상태로 재정의를 할수있는데 왜 protected로 공개해야 하는걸까요?
- 훅 메소드 라는건 재정의 가능한 메소드를 말하는걸까요? 그렇다면 훅 메소드 라는 정의는 디자인 패턴의 용어로 이해하면 되는지 이야기 해보고싶습니다.
item37. Enummap 버전은 언제나 식물의 생애주기당 하나씩의 중첩 맵을 만들지만, 스트림 버전에서는 해당 생애주기에 속하는 식물이 있을때만 만든다. (228p)
Enummap 버전은 언제나 식물의 생애주기당 하나씩의 중첩 맵을 만들지만, 스트림 버전에서는 해당 생애주기에 속하는 식물이 있을때만 만든다.
==> 이 경우에 EnumMap과 Stream 중에 효율성이 더 좋은것은 무엇인지 이야기해보고 싶습니다.
item02.빌더
19p. 빌더 패턴은 계층적으로 설계된 클래스와 함께 쓰기에 좋다고 나와있는데,
추상 클래스에 빌더를 선언해 놓으면, 하위 클래스가 그 빌더를 오버라이딩 해서 사용할 수 있으므로 쓰기 좋다는 의미가 맞는지..?
item06. "유한 상태 머신을 만들기 떄문에 인스턴스 생성 비용이 높다."
32p 에서 말하는 유한 상태 머신이 정확히 무엇인지 이걸로 인해 왜 인스턴스 생성 비용이 높은 지에 대해 궁금합니다.
item13. 배열 복사에서 clone과 copy(arraycopy, copyof)의 차이점은 무엇인지
item07. 리스너 혹은 콜백
39p 에서 말하는 리스너 혹은 콜백이 왜 메모리 누수의 주범인지, "뭔가 조치해주지 않는 한 콜백은 계속 쌓여갈 것이다" 라는 말의 의미에 대해서 알려주세요
item43. 메서드 참조 유형 (261p)
메서드 참조 유형에서 각자 서로 이해한 바를 공유해보아요
item41. 보통은 Set을 마커 인터페이스로 생각하지 않는다.(250p)
add, equals, hashcode등 메서드를 수정했기 때문에 Set을 마커 인터페이스로 생각하지 않는다고 하는데 메서드를 수정한 것과 마커 인터페이스로 생각하지 않는 것과 무슨 연관이 있는 걸까요?
item31. PECS에서 extends와 super의 차이점에 대해서
item10. equals()는 항시 메모리에 존재하는 객체만을 사용한 결정적 계산만 수행해야한다.
61페이지에 있는 문구인데, 이 말의 의미와 객체 식별성이랑의 차이점이 정확히 이해가 가지않습니다. 객체 식별성도 두 객체가 메모상에서 같은 객체를 가리키는지 여부이고, 논리적 동치성이 equals()는 항시 메모리에 존재하는 객체만을 사용해야 한다고 한다면, 둘의 차이점..? 은 단순히 메모리 주소값을 비교하냐, 값 자체를 비교하냐의 차이로 보면 되는건지에 대해서 이야기해봤으면 좋겠습니다
item18. 117-118p의 코드가 이해가 가지 않아 이슈로 올립니다.
컴포지션은 기존 클래스가 새로운 클래스의 멤버를 사용하는 것을 뜻하는 걸로 알고 있습니다.
하지만 117p에 18-2 코드를 보게되면 이는 컴포지션이 아닌 컴포지션을 활용한 클래스를 상속한걸로 보이는데요 이걸 왜 컴포지션을 사용했다고 표현한건지 이해가 잘 가지 않습니다.
컴포지션의 사용은 118p에 18-3에서 사용한 걸로 보이는데 이를 왜 재사용할 수 있는 전달 클래스라고 한 것인지 이해가 가지 않습니다.
또한 117-118에서 이렇게 사용했을 때의 이점에 대해서 토론하고 싶습니다.
item45. Stream 동작원리
스트림의 중간연산과 종단 연산의 차이점과
스트림의 동작원리중 지연평가의 개념에 대해서 깊게 습득해서 토론해보아요
item10. "필드의 표준형을 저장해둔 후 표준형끼리 비교하면 훨씬 경제적이다."
63p에 비교하기가 아주 복잡한 필드의 경우 "필드의 표준형을 저장해둔 후 표준형끼리 비교하면 훨씬 경제적이다." 이 말이 이해가 가질 않습니다.
예시를 보여주세요.
item15. 99-100p 나와있는 예시 코드에서 말하고자 하는 내용이 무엇인지 이해가 안되서 이슈로 올립니다
item06. 객체 풀
34p 에서 말하는 객체 풀이란? 무엇을 말하는 것인지 궁금합니다.
item19. 128p 클래스의 동작을 유지하면서 재정의 가능 메서드를 사용하는 코드를 제거할 수 있는 기계적인 방법
본문 코드를 private 도우미 메서드로 옮긴고 도우미 메서드를 호출하도록 수정한다 여기서 도우미 메서드라 함은 무엇을 말하는 것일까요?
item03. 싱글턴 클래스의 역직렬화 관련 질문!
- 싱글턴 클래스를 직렬화하고 역직렬화할 때마다 새로운 인스턴스가 만들어지는 이유가 궁금해요!
- readResolve 메서드를 추가한 것만으로 역직렬화시에 원래의 인스턴스가 반환되는 이유에 대해서 이야기하고 싶습니다.
item46. forEach 연산은 스트림 계산 결과를 보고할 때만 이용해야한다.
278p에서 말하는 이 말이 정확히 어떠한 상황을 뜻하는 걸까요?
item.34 static final의 사용처
enum이 넓은 면에서 static final보다 장점이 많다고 합니다.
그렇다면 어떤 부분에서 static final을 사용하였을 때 enum을 사용했을 때보다 더 좋은 효과를 가져올까요?
item13. 런타임 타입과 컴파일 타임 타입의 차이점
2개가 왜 나눠져서(?) 타입이 정의 되는지 그리고 배열은 왜 2개가 같은지에 대해서 토론해보면 좋을거같아요.
item15. serializable을 구현한 클래스는 그 필드들이 의도치않게 왜 공개 api가 되는가?
98p 왜 그런지 토론해보면 좋을 것 같습니다.
Item13. 81p 배열의 clone은 런타임 타입과 컴파일타임 타입 모두가 원본 배열과 똑같은 배열을 반환한다.
위 말과 Object[] 로 선언된 필드를 직접 clone하였을 때와 Object[] 로 선언된 필드를 가지고 있는 객체를 super.clone 하였을 때 동작이 어떻게 다른지 궁금합니다.
item18. 121p 래퍼 클래스는 하위클래스보다 견고하고 강력하다.
위 문장의 의미에 대해서 이해가 안되서 이슈로 올립니다 !
item01. 호출될때마다 새로운 객체를 생성하지 않아도 된다는 내용 질문!
호출될때마다 새로운 객체를 생성하지 않아도 된다는건,
- 그럼 동일한 a객체를 동일한 프로젝트 내에 있는 클래스에서 사용한다는 의미인지,
- 그렇게 되면 의존성(?)이 커지게 되서 문제가 발생할 수 있지않을까..?
- 그리고 동일한 객체를 공유하면서 사용할지 , 또는 새로운 객체를 생성하는지에 대한 기준은 프로젝트 마다 달라질수있는지에 대해서 이야기해보고 싶습니다.
item24. 중첩 클래스 종류
중첩 클래스 종류에 대해서 책에 예시가 없고, 내용 자체가 크게 와닿지 않아서 다음 스터디때 각자 이해한 내용에 대해서 자세히 스터디 했으면 합니다..! 그리고 관련된 이슈사항이나 정리된 내용이 있다면 하위에 달아주세요!
item18. 114페이지 메소드 호출과 달리 상속은 캡슐화를 깨뜨린다.
상속이 캡슐화를 깨뜨린다는 의미가 상속받은 하위 클래스의 기능에 대해서 고유성(?)을 깨지게 한다는 의미인지 또는 다른 의미인지에 대해서 궁금합니다.
item15. public 클래스의 인스턴스 필드는 되도록 public이 아니어야 한다.
인스턴스 필드를 public으로 할 경우 스레드에 안전하지 않다고 하지만 필드를 private으로 제공해도 setMethod들을 제공한다면 이 역시 스레드에 안전하지 않은 것이지 않나?라는 생각이 들었습니다. 이에 대해 논의하고 싶습니다.
item13. 깊은 복사와 얕은 복사의 차이
item02. "빌더를 이용하면 가변인수 매개변수를 여러개 사용할 수 있다" 이 말에서 빌더와 가변인수의 관계란?
책 21p 참고..!
item.30 항등 함수를 담은 클래스를 사용하는 이유
177p 항등 함수를 담은 클래스를 사용하는 이유와 실제로 어떤식으로 사용할 수 있는 지에 대해서 공부해봅시다.
item15. 정보 은닉의 장점이 왜 시스템 개발 속도를 높이는 것인지?
item11. Hashcode를 오버라이드 했을때, 실무에서 어떤식으로 사용할수 있는지
hashcode를 오버라이드 했을경우에 실무에서 어떤방식으로 사용할수있는지에 대해서 이야기해보고 싶습니다.
item20. 추상클래스보다는 인터페이스의 사용을 우선하라하였지만 어느 상황에서는 추상클래스가 더 유리한 이점을 가지게 될까요
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.