Skip to content

Commit

Permalink
GITBOOK-199: item 49 : 매개변수가 유효한지 검사하라
Browse files Browse the repository at this point in the history
  • Loading branch information
GoldenPearls authored and gitbook-bot committed Nov 18, 2024
1 parent 32911ae commit d762136
Show file tree
Hide file tree
Showing 101 changed files with 408 additions and 51 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified developLog/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified developLog/.gitbook/assets/image (1) (1) (1) (1) (1).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified developLog/.gitbook/assets/image (1) (1) (1) (1).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified developLog/.gitbook/assets/image (1) (1) (1).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified developLog/.gitbook/assets/image (1) (1).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified developLog/.gitbook/assets/image (1).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified developLog/.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified developLog/.gitbook/assets/image (2) (1) (1) (1) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (2) (1) (1) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (2) (1) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (2) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (2) (1).png
Binary file modified developLog/.gitbook/assets/image (2).png
Binary file modified developLog/.gitbook/assets/image (3) (1) (1) (1) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (3) (1) (1) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (3) (1) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (3) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (3) (1).png
Binary file modified developLog/.gitbook/assets/image (3).png
Binary file modified developLog/.gitbook/assets/image (4) (1) (1) (1) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (4) (1) (1) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (4) (1) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (4) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (4) (1).png
Binary file modified developLog/.gitbook/assets/image (4).png
Binary file modified developLog/.gitbook/assets/image (5) (1) (1) (1) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (5) (1) (1) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (5) (1) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (5) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (5) (1).png
Binary file modified developLog/.gitbook/assets/image (5).png
Binary file modified developLog/.gitbook/assets/image (6) (1) (1) (1) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (6) (1) (1) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (6) (1) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (6) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (6) (1).png
Binary file modified developLog/.gitbook/assets/image (6).png
Binary file modified developLog/.gitbook/assets/image (7) (1) (1) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (7) (1) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (7) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (7) (1).png
Binary file modified developLog/.gitbook/assets/image (7).png
Binary file modified developLog/.gitbook/assets/image (8) (1) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (8) (1) (1).png
Binary file modified developLog/.gitbook/assets/image (8) (1).png
Binary file modified developLog/.gitbook/assets/image (8).png
Binary file modified developLog/.gitbook/assets/image.png
2 changes: 1 addition & 1 deletion developLog/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ layout:
* 📝 저는 기록하고 남들과 정보를 나누는 것을 좋아하기에 [![](https://img.shields.io/badge/Velog-20C997?style=flat-square\&logo=Velog\&logoColor=white\&https://velog.io/@prettylee620)](https://velog.io/@prettylee620)[![](https://img.shields.io/badge/Notion-000000?style=flat-square\&logo=Notion\&logoColor=white)](https://mellona.oopy.io/)에 기록합니다.
* 📌 최근에 기록하여 많은 공감을 얻었던 글은 **면접에 관련된 글**이며, 그 외의 다수의 글로 공감과 댓글을 받았으며, 2024년 **velog 팔로워 100명 이상**을 달성하였습니다.

<figure><img src=".gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src=".gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>

### ☎ CONTACT

Expand Down
2 changes: 2 additions & 0 deletions developLog/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@
* [item 46 : 스트림에서는 부작용 없는 함수를 사용하라](programming-lanuage/java/effective-java/7/item-46.md)
* [item 47 : 반환타입으로는 스트림보다는 컬렉션이 낫다.](programming-lanuage/java/effective-java/7/item-47-..md)
* [item 48 : 스트림 병렬화는 주의해서 적용하라](programming-lanuage/java/effective-java/7/item-48.md)
* [8장 : 메서드](programming-lanuage/java/effective-java/8/README.md)
* [item 49 : 매개변수가 유효한지 검사하라](programming-lanuage/java/effective-java/8/item-49.md)
* [스터디에서 알아가는 것](programming-lanuage/java/effective-java/undefined.md)
* [모던 자바 인 액션](programming-lanuage/java/modern-java-in-action/README.md)
* [chaper 1. 자바 8, 9, 10, 11 : 무슨 일이 일어나고 있는가?](programming-lanuage/java/modern-java-in-action/chaper-1.-8-9-10-11.md)
Expand Down
4 changes: 2 additions & 2 deletions developLog/algorithm-datastructure/algorithm/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
description: 알고리즘 모아두는 페이지
icon: toilet-paper-blank
cover: ../../.gitbook/assets/image (7) (1).png
description: 알고리즘 모아두는 페이지
cover: ../../.gitbook/assets/image (7) (1) (1).png
coverY: -368.75733333333335
layout:
cover:
Expand Down
8 changes: 4 additions & 4 deletions developLog/algorithm-datastructure/data-structure/hash-set.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,17 +48,17 @@ print(c2 in unique) //true

* c1과 c2의 메모리 주소는 당연히 다름 ⇒ 다른값이 나옴

<figure><img src="../../.gitbook/assets/image (5).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (5) (1).png" alt=""><figcaption></figcaption></figure>

2. 만약 모듈러 연산해서 **나온 값이 같더라도**, 그 자리에 있는 해시값을 비교해서 다르면 아 키가 다르구나 다른 키라고 판단하고 다른 곳에 저장

<figure><img src="../../.gitbook/assets/image (4) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (4) (1) (1).png" alt=""><figcaption></figcaption></figure>

3. 만약 우연의 확률로 **두 개의 해시값이 비교해서 같더라도**, 아 해시충돌이 나서 같을 수 있으니 실제 키 c1와 c2 객체끼리 비교를 하게 됨
4. 객체끼리의 비교는 어떻게 하냐? 실제 메모리 주소를 가지고 비교를 함
5. 당연히 서로 다른 객체는 서로 다른 메모리 주소를 갖기 때문에 다르다고 봄

<figure><img src="../../.gitbook/assets/image (6).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (6) (1).png" alt=""><figcaption></figcaption></figure>

6. set에 있는지 확인하는 동작방식

Expand Down Expand Up @@ -115,7 +115,7 @@ print(c2 in unique) //true

#### 변화된 형태에서 실행

<figure><img src="../../.gitbook/assets/image (7).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (7) (1).png" alt=""><figcaption></figcaption></figure>

1. 먼저 같은 인덱스 위치로 갔다면, 해시값 비교
2. 두 번째로 재정의한 메소드로 인해 x, y 좌표 비교
Expand Down
12 changes: 6 additions & 6 deletions developLog/algorithm-datastructure/data-structure/undefined.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@

## 2. 연결리스트란?

<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>

### 1) 개념

Expand All @@ -45,7 +45,7 @@

### 2) 노드(Node)

<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>

* 연결리스트에서 사용되는 하나의 데이터 덩어리이며, `데이터 & 링크`이 2가지의 필드를 담고 있는 구조
* data : 노드가 담고 있는 데이터/값, 문자열, 숫자 등등 원하는 값을 넣고 저장
Expand All @@ -54,15 +54,15 @@

### 3) 연결 리스트의 구조

<figure><img src="../../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>

1. 마지막 연결할 것은 없기에 null과 연결
2. 연결리스트의 첫 번째 즉, 시작 지점에 있는 것을 `head`라고 함
3. 연결리스트의 마지막은 `tail`라고 부름

### 4) 배열 vs 연결리스트

<figure><img src="../../.gitbook/assets/image (5) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (5) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>

#### 배열

Expand All @@ -85,7 +85,7 @@

#### Singly Linked List(단일 연결 리스트)

<figure><img src="../../.gitbook/assets/image (6) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (6) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>

1. 대부분의 연결리스트의 문제의 주력
2. 다음 노드에 대한 포인터만 가지고 있다
Expand All @@ -100,7 +100,7 @@

#### Circular Linked List(원형 연결 리스트)

<figure><img src="../../.gitbook/assets/image (8) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (8) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>

* 이중연결리스트와 같지만 **마지막 노드의 next 포인터가 헤드 노드**를 가르친다.

Expand Down
2 changes: 1 addition & 1 deletion developLog/book/learn-errors/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ description: 에러가 무서워지지 않는 책

# 에러가 무서워지지 않는 책

<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
2 changes: 1 addition & 1 deletion developLog/book/onboarding/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ description: 개발자 온보딩 가이드 책을 읽고 적어보는 곳

# 필독 개발자 온보딩 가이드

<figure><img src="../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
2 changes: 1 addition & 1 deletion developLog/book/oop/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ layout:

# 객체지향의 오해와 사실

<figure><img src="../../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
6 changes: 3 additions & 3 deletions developLog/ci-cd/github-action/oauth-gitbook-github.io-1.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@

2. <mark style="color:red;">repo</mark> ⭐&#x20;

<figure><img src="../../.gitbook/assets/image (5) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (5) (1) (1).png" alt=""><figcaption></figcaption></figure>

* 코드, 커밋 상태, 리포지토리 초대, 협력자, 배포 상태 및 리포지토리 웹후크에 대한 읽기 및 쓰기 권한을 포함하여 퍼블릭 및 프라이빗 리포지토리에 대한 모든 권한을 부여합니다.&#x20;
* **참고**: 리포지토리 관련 리소스 외에도 `repo` 범위는 <mark style="color:red;">프로젝트, 초대, 팀 멤버 자격 및 웹후크를 포함하여 조직 소유 리소스를 관리할 수 있는 액세스 권한을 부여</mark>합니다. 이 범위는 사용자가 소유한 프로젝트를 관리하는 기능도 부여합니다.
Expand Down Expand Up @@ -157,10 +157,10 @@
`Github action` 파일에 개인 레포로 변경사항을 `push`할 수 있도록 하려면\
위에서 발급 받은 개인 토큰을 함께 보내 내 레포에 `push`할 권한을 받은 사람임을 증명 하기 위함

<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>

<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>

<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>

* GITBOOK , Github.io레포의 `⚙️ Settings` 클릭
* `⊞ Secrets and variables`를 펼쳐 `Actions` 클릭
* `New repository secret` 클릭
Expand Down
4 changes: 2 additions & 2 deletions developLog/cs/etc/cs.md
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@
* **8080 포트**
* 이런 에러 발생 원인

<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>

* 외부에서 실행되는 톰캣 서버 존재
* 서버 연결 정보가 제대로 주어지지 않을 때
Expand Down Expand Up @@ -300,7 +300,7 @@ CF. 여러 개의 브라우저 서버 동시 접속 시도는 지원 되어야

8. **다음의 화면을 구현하기 위한 HTML 코드를 작성해 주세요**

<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>

```java
<html>
Expand Down
8 changes: 4 additions & 4 deletions developLog/ex/knowledge/undefined.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,23 +31,23 @@

## 2. Linux에 rust 도입 상황

<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>

좀 더 현대적인 주제인 Linux에 Rust 언어가 도입된 것에 대해 토발즈는 더 빨리 채택되지 않는 것에 실망하고 있습니다. “업데이트가 더 빨라질 것으로 기대했지만, 기존 커널 개발자들은 C에 익숙하고 Rust를 모른다는 것이 문제 중 하나입니다. 어떤 면에서는 매우 다른 새로운 언어를 배워야 하는 것에 대해 그다지 달가워하지 않습니다. 그래서 Rust에 대한 반발이 있었습니다.” 또한 토발즈는 “또 다른 이유는 Rust 인프라 자체가 매우 안정적이지 않았기 때문이기도 합니다. ....”라고 덧붙였습니다.

{% embed url="https://linux.slashdot.org/story/24/08/25/0256228/linus-torvalds-talks-about-rust-adoption-and-ai" %}

## 3. 오픈소스 컨트리뷰터

<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>

{% embed url="https://www.contribution.ac/" %}

## 4. 타입 스크립트 밈 이해하기

<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>

<figure><img src="../../.gitbook/assets/image (4) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (4) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>

### 이게 뭔 뜻이냐?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ int sum(Collection c) {

위의 메서드는 `Collection`에 있는 요소들이 `Integer` 타입이라고 가정하고 작성된 것이다. 하지만 만약 `String`과 같은 다른 타입의 요소를 가진 컬렉션을 전달하면, 컴파일 시에는 문제가 없지만 **런타임에** `ClassCastException`이 발생할 수 있다.

<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>

> 위와 같은 문제를 해결하기 위해 Java 개발자들은 **타입을 지정하여 컴파일 시점에 타입 안전성을 보장**할 수 있는 방법을 고안하였고, 그 결과 제네릭이 등장하게 되었다.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

배열을 꼭 반환해야 하는 상황이 아니라면 컬렉션[^1]을 사용하자..!

<figure><img src="../../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>

그 이유가 뭘까?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ public class Stack<E> {

다음과 같은 컴파일 에러 발생

<figure><img src="../../../../.gitbook/assets/image (4).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../../.gitbook/assets/image (4) (1).png" alt=""><figcaption></figcaption></figure>

> <mark style="color:red;">제네릭은 E와 같은 실체화 불가 타입으로는 배열을 만들 수 없다.</mark>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public void pushAll(Iterable<E> src) {

integer은 Number의 하위 타입이니 잘 동작해야 한다 하지만 클라이언트 코드에서 실제로는 오류 메세지가 뜬다.

<figure><img src="../../../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>

```java
import java.util.Arrays;
Expand Down Expand Up @@ -110,7 +110,7 @@ class Item28Test {

> 약간, 코드 뒤져보니 PolicyUtils 등 자바 코드 기본 제공 클래스들에서 많이 쓰는 듯? 실제 코드에서는 잘 안쓰는 느낌임
<figure><img src="../../../../.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>

직접 정의한 Stack 클래스는 `push(E)` 메서드를 통해서만 요소를 추가할 수 있다. 따라서 타입 안전성은 확인되지만 elements 배열은 런타임 시에 `E[]`가 아닌 `Object[]`가 된다. 역시나 이부분도 런타임 시에 제네릭 타입이 소거되기 때문임

Expand Down Expand Up @@ -182,7 +182,7 @@ public void popAll(Collection<? super E> dst) {



<figure><img src="../../../../.gitbook/assets/image (3).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption></figcaption></figure>

<mark style="color:red;">모든 타입은 자기 자신의 상위 타입이</mark>므로 `Collection<? super Number>`선언은 \`Collection을 비롯하여 Collection\` 타입의 매개변수가 전달되어도 오류가 발생하지 않는다.

Expand Down Expand Up @@ -432,7 +432,7 @@ private static <E> void swapHelper(List<E> list, int i, int j) {

예를 들어서 `Java 5` 부터 지원한 `ScheduledFuture` 인터페이스의 구현 코드를 살펴보면 아래와 같다. `Delayed`의 하위 인터페이스이며 `Delayed`인터페이스는 `Comparable<Delayed>`를 확장했다. 반면에 `ScheduledFuture` 인터페이스는 `Comparable<ScheduledFuture>`를 확장(extends)하지 않는다.

<figure><img src="../../../../.gitbook/assets/image (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>

```java
// ScheduledFuture interface
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@



<figure><img src="../../../../.gitbook/assets/image.png" alt=""><figcaption><p>https://sas-study.tistory.com/239 이미지 참고</p></figcaption></figure>
<figure><img src="../../../../.gitbook/assets/image (8).png" alt=""><figcaption><p>https://sas-study.tistory.com/239 이미지 참고</p></figcaption></figure>

## 🌱 **스트림 파이프라인 연산**

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# item 46 : 스트림에서는 부작용 없는 함수를 사용하라

<figure><img src="../../../../.gitbook/assets/image (1).png" alt=""><figcaption></figcaption></figure>

## 1. 스트림의 핵심 : 스트림을 이해하기 어려울 수 있음

**스트림**은 <mark style="color:red;">그저 또 하나의 API가 아닌, 함수형 프로그래밍에 기초한 패러다임이기 때문</mark>이다. 스트림이 제공하는 표현력, 속도, 상황에 따라서는 병렬성을 얻으려면 API는 말할 것 도 없고 이 패러다임까지 함께 받아들여야 한다.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# item 48 : 스트림 병렬화는 주의해서 적용하라

<figure><img src="../../../../.gitbook/assets/image.png" alt=""><figcaption></figcaption></figure>

## 1. 자바의 동시성 프로그래밍의 역사

> 주류 언어 중, 동시성 프로그래밍 측면에서 자바는 항상 앞서갔다
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# 8장 : 메서드

이번 장에서는 메서드를 설계할 때 주의할 점들을 살펴본다.&#x20;

> 구체적으로는 매개변수와 반환값을 어떻게 처리해야 하는지, 메서드 시그니처는 어떻게 설계 해야 하는지, 문서화는 어떻게 해야 하는지를 다룬다.&#x20;
이번 장의 내용 중 상당 부분은 메서드뿐 아니라 생성자에도 적용된다. 그리고 ‘4장 클래스와 인터페이 스’와 마찬가지로 이번 장도 사용성, 견고성, 유연성에 집중할 것이다.

<figure><img src="../../../../.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
Loading

0 comments on commit d762136

Please sign in to comment.