# Generic

297개의 포스트

내일배움캠프 7기 Day51 TIL (3)

제네릭(Generics) Part.1 > 타입에 의존하지 않는 범용 코드를 작성할 때 사용. 중복을 피하고, 코드를 유연하게 작성할 수 있게 한다. 공식문서 상황 예시 ① 두 인자를 파라미터로 같은 Int타입 값을 받고, 그 둘을 swap 하는 함수를 만들고 싶다. ② 파라미터가 모두 Int인 경우, 잘 동작함. 그러나 타입이 다르면 사용할 수가 없다. But, 나는 다른 타입을 인자로 받으면서 동일한 내용을 가진 함수를 사용하고 싶다? ③ 아 같은 내용을 반복하기 번거롭다... 하면 😮‍💨 이럴때 쓰는 것이 바로 제네릭(Generics). 타입에 제한을 두지 않는 코드를 작성할 때 쓴다. 사용 방법 ❗️여기에 사용된 이 T를 Type Parameter라고 부르는데 _

2023년 9월 20일
·
0개의 댓글
·
post-thumbnail

Generics & Collection

Collection 제네릭 기법으로 구현됨 컬렉션의 요소는 개체만 가능함 (기본타입사용불가) Set HashSet List Vector 길이 제한 없고 자동으로 길이 조정 기본 타입은 Wrapper 객체로 저장 에서 E 대신 특정 타입으로 구체화 타입 작성 안하면 경고 발생 벡터 중간, 맨 뒤에 객체 삽입 가능 벡터의 사이즈보다 큰 곳에 삽입 불가능 벡터의 객체 삭제 가능 Stack ArrayList 벡터와 특성이 매우 비슷하지만 스레드 동기화 기능 없음 그리고 기본타입은 박싱 / 언박싱으로 Wrapper 객체로 저장 (개발자가 코

2023년 9월 19일
·
0개의 댓글
·
post-thumbnail

제너릭을 예시로 이해 해보자!

지난 시간에는 Generic에 대한 전반적인 포스트를 작성하였다. 단순하게 개념으로 이해하기는 어려워 여러군대에 분포되어 있는 예시를 가지고 이해 해보록 하자. Nested Type Generic 아래와 같은 코드가 있다고 가정해보자 위의 코드는 정상적으로 작동할까? 정답은 X이다. 자바에서 inner level에서는 invariant 즉 무공변성이다. 따라서 동일한 파라미터인 `` 를 사용하거나 다이아몬드 연산자를 통해서 표현 할 수 있다. [상속관계 클래스 제너릭](https://stackoverflow.com/questions/72259078/invariant-generics-dont-seem-working-correctly/

2023년 9월 18일
·
0개의 댓글
·
post-thumbnail

[TypeScript] 클래스 & 제네릭

타입스크립트 클래스(class) 사용법 클래스에서 타입정의 방법은 함수 정의 방법과 비슷하며,* 생성자 메서드에서 사용될 속성들을 미리 정의*해주어야합니다. 클래스 접근 제어자 클래스의 멤버 변수와 메서드에 대한 접근 권한을 제어하는 키워드입니다. 접근 제어자를 사용하여 클래스의 내부 구조를 캡슐화하고, 외부에서의 접근을 제한하거나 허용할 수 있습니다. 타입스크립트에서는 다음 네 가지 접근 제어자(public, private, protedcted, readolny)를 사용할 수 있습니다. public: 멤버 변수나 메서드를 클래스 내부에서만 접근할 수 있도록 합니다. 외부에서 접근 시 컴파일 오류가 발생합니다. private: 멤버 변수나 메서드를 클래스 내부에서만 접근할 수 있도록 합니다. 외부에서 접근 시 컴파일 오류가 발생합니다. protected : 멤버 변수나 메서드를 클래스 내부와 해당 클래스를 상속한 하위 클래스에서만 접

2023년 9월 13일
·
0개의 댓글
·

Generic

정의 자바에서 제네릭(generic)이란 데이터의 타입(data type)을 일반화한다(generalize)는 것을 의미 제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는 방법입니다. > #### 정점 (컴파일 시 조기 타입 검사를 수행하는) 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있습니다 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있습니다. 대중적인 통상적인 선언 > 제네릭 클래스 사용 예제 출처1: https://st-lab.tistory.com/153 출처2: http://www.tcpschool.com/java/java_gener

2023년 9월 10일
·
0개의 댓글
·
post-thumbnail

Java Generic을 이해해보자

이번에 프로젝트에서 배치 프로그램을 작성하는 중에 SimpleStepBuilder 멤버 변수를 확인하는 도중에 제너릭이 있는 것을 확인하였으나 기존에 알고 있던 부분과 많이 달라 이번에 제대로 공부하고자 한다. 만일 아래의 예시 중 Generic 부분에 어떤 타입 경계가 들어가는지 바로 알 수 있다면 해당 Generic 시리즈를 이해하고 있다고 볼 수 있다. 해당 정답은 이후의 포스트 예시로 이해해보자에서 공개할 예정이다. 제너릭의 정의 주로 접하는 제너릭의 정의는 무엇인가? 쉽게 말하면 클래스 내부에서 사용할 데이터의 타입을 외부에서 지정하는 기법을 말한다. 추가적으로 다양한 타입의 객체들을 다루는 메소드나 컬렉션 클래스에 컴파일 시에 캐스팅 코드를 넣어주어 타입체크를 하는 기능을 가지고 있다. 또 한 제너릭을 사용할 때는 primitive 타입에는 사용이 불가능하다. 따라서 int, double 과 같은 자료형은 Wrapper cla

2023년 9월 7일
·
0개의 댓글
·

Java Generic

제네릭이란 뭔가(Generic) 정적 타입을 지향하는 프로그램 언어에서 제네릭이라고 하면 클래스나 함수(메소드) 등에서 미리 정해진 타입이 아닌 사용자가 원하는 타입을 넣어서 사용할 수 있는 방법이라 할 수 있다. 이미 많은 컨터이너들(List, Set, Map 등)이 이런 방식으로 구현되어 있다. Java 에서 이를 어떻게 사용하는 지 간단히 알아보자. 클래스 Foo 에서 ` 부분이 제네릭을 정의하는 부분이다. 사용자가 이 제네릭을 사용할 때 ` 부분을 원하는 타입으로 넣어서 사용하면 된다. 아래 처럼 사용하면 된다. T 대신에 원하는 타입을 넣어서 사용하면 끝이다. 실제로 해당 타입(위에서는 Integer) 로 치환된다.

2023년 9월 7일
·
0개의 댓글
·
post-thumbnail

[Kotlin] 제네릭(Generic)에 대해

제네릭이란 무엇일까? 제네릭은 클래스 내부에서 사용할 자료형을 나중에 인스턴스를 생성할 때 확정한다. 제네릭을 사용하게 되면 객체 자체의 자료형을 컴파일때 체크하기 때문에 안정성을 높일 수 있다. > 장점? 의도하지 않은 자료형의 객체를 지정하는 것을 막고, 객체를 사용할 때 원래의 자료형에서 다른 자료형으로 형 변환시 발생할 수 있는 오류를 줄여준다! > 기본적인 제네릭 제네릭을 사용할 때는 사이에 형식 매개변수를 넣어 선언하며 형식 매개변수는 자료형을 대표하는 용어로,T와 같이 대문자로 사용한다. 아주 간단한 예제를 살펴보자. Box에서 T가 바로 형식 매개변수 이름이다. 무조건 강제적으로 T만 사용해야하는 것은 아니며, 단지 일종의 규칙일 뿐이다. 제네릭에서 사용하는 형식 매개변수 이름을 알아보자! E : 요소(elevemnt) K : 키(key) N : 숫자(number) T : 형식(Type

2023년 9월 4일
·
0개의 댓글
·
post-thumbnail

[Scala] Generic

Scala는 Java 5(즉, JDK 1.5)와 같이 파라미터화된 클래스의 빌트인 자원을 제공한다. 즉, 클래스 내부에서 사용할 데이터 타입을 외부에서 지정할 수 있도록 하는 제네릭 클래스를 사용하면 유용하게 개발이 가능하다. 특히, 컬렉션 클래스의 개발에 유용하다. 제네릭을 사용하면 외부에서 자료형을 지정해줄 뿐만 아니라, 지정된 자료형이 아닌 잘못된 타입이 들어왔을 시 컴파일러가 이를 탐지할 수 있어 안정적이다. 예를 들어 큐(Queue)를 직접 만든다고 생각해보자. 이때 큐의 내부 자료형은 모든 타입이 될 수 있다. 즉, 문자열 큐가 될 수도 있고, Int형 큐가 될 수도 있는 것이다. 이런 경우 어떤 식으로 코드를 작성할까? 위와 같이 임의의 타입을 지정하는 T라는 항목의 타입으로 변수형을 지정하였다. 즉, 해당 큐를 사용할 때 필요한 타입을 넣을 수 있도록 한 것이다. > 임의의 타입 ![](https://vel

2023년 9월 4일
·
0개의 댓글
·
post-thumbnail

[IT국비지원] 개발자 교육 24일 차 : JAVA(2023.08.29)fit.구디아카데미,김지훈 강사님

속도가 점점 빨라지고 있는 느낌. 타이핑 치는 것도 따라가기 힘들다😢 하지만 응용문제를 모두 맞춰서 의욕 상승! 이하 구디아카데미 김지훈 강사님의 수업자료와 강의 내용 정리, 실습한 내용을 정리함! Generic Collection Framework 사용시 계속해서 가 나온다. 이를 Generic 이라고 부른다. index action 이 input 인 form 작성 name 속성이 no, name, grade 인 text 타입 출력 입력 버튼 p타입 안에 EL

2023년 8월 29일
·
0개의 댓글
·
post-thumbnail

[PL] Ch11. Abstract Data Types and Encapsulation Constructs

11.1 The Concept of Abstraction 11.2 Introduction to Data Abstraction 11.3 Design Issues for Abstract Data Types 11.4 Language Examples ![](https://velog.velcdn.com/images/jnary/post/e6b076a7-8dcf-48d4-8

2023년 8월 28일
·
0개의 댓글
·
post-thumbnail

[TypeScript] Generic이 뭘까

동아리 스터디 중 DropdownList 컴포넌트를 가용성 있게 만들기로 했다. > 컴포넌트의 가용성? > Typescript를 공부하면서 범용성 좋은 컴포넌트를 만들어보진 못한 것 같아, 새로운 Dropdown 컴포넌트를 구성하기 시작했다. 각 사용 범위에 맞게 item과 value를 정해주고, Dropdown의 Props로 number, string, object 객체든 뭐든 받아낼 준비를 해야 했다. 하지만, Typescript라는 특성으로 인해서, 각 아이템의 명확한 타입을 지정해주지 않으면, 완성도 높은 컴포넌트를 작성할 수 없다는 것을 깨닫는 것은 별로 오래 걸리지 않았다; export type을 통해 다른 위치에서도 Dropdown에 넣을 수 있는 Item의 타입을 선언했다.

2023년 8월 27일
·
0개의 댓글
·

React + Spring Boot + MySQL (5)

https://velog.io/@hyeonjoonpark/React-Spring-Boot-MySQL-4 이어서 Repository를 만들어보자 Repository com.example 폴더 안에 Repository 폴더를 만든다 Reposiroty 패키지 안에 다음과 같은 인터페이스를 만든다 UserRepository BoardRepository PopularSearchRepository LikeRepository CommentRepository 관련 어노테이션 : Repository로 사용하겠다 선언 (의존성 주입) @Component 어노테이션이 포함되어 있음 UserRepository는 JpaRepository를 상속받는

2023년 8월 26일
·
0개의 댓글
·
post-thumbnail

회고2: tailwind ❤️ 타입스크립트

둘이 어떻게 이어줄까 자 이제 물과 기름같은 이 두 패키지를 어떻게 중매시켜줄까 라는 실질적인 고민을 할 시점이다. 우선 part1 에서 말했던 초기 디자인은 다음과 같다. css in js의 형태 타입스크립트로 완전 무장시키기 variants 컨셉 조건부 스타일링 공식문서 접근성 향상 그리고 이 네가지 아이디어로 등장한 api는 다음과 같다. 또한 tailwind에서 좀 귀찮은 부분이 있는데 그것은 nest 조건을 prefix로 매번 붙여줘야 한다는 것이다. 예컨데 dark 모드에서 borderColor와 backgroundColor를 바꾸고 싶으면 dark:bg-xxx dark:border-xxx와 같이 적어 줘야 하는데, 깊이가 깊어질수록 가독성 장난 없다. 그래서 5번째 조건으로 **nest 조건을 object로 묶

2023년 8월 19일
·
5개의 댓글
·
post-thumbnail

Functor In Programming

Functor란 무엇인가? Generic 변수, 클래스, 구조체 등을 선언할 때, 해당 객체 내부에서 사용하는 타입을 고정하지 않고 임의의 타입을 사용할 수 있도록 하는 것 실제 사용하는 시점에 사용하는 타입을 결정한다. Type Constructor 새로운 데이터 타입을 만드는 틀. A라는 진짜 데이터가 있을 때, 이 값을 유지하면서 감쌀 수 있는 논리적 구조. 감싼다는 측면에서 바라보았을 때 이 정의에 부합하는 녀석들은 이런 것들이 있을 수 있겠다. Optional Array Dictionary Set Result Either Future Promise 그런데 그 "특정" 이라는 단어 자체가 임의의 값을 받을 수 있다는 것을 내포하고 있기 때문에 Generic으로 표현하는 것이 더 적합하다. Optional Array

2023년 8월 17일
·
0개의 댓글
·
post-thumbnail

[TypeScript] 제네릭

🌈 코딩앙마의 TypeScript 강좌 수강 후, 이해한 내용을 정리한 글입니다. 제네릭으로 타입을 변수화할 수 있다. 제네릭은 일반적으로 T로 나타낸다. 제네릭을 interface에서도 활용할 수 있다. 제네릭에 extends도 사용할 수 있다. extends를 사용하여 제네릭으로 정의된 object types의 필수 키와 타입을 지정할 수 있다.

2023년 8월 16일
·
0개의 댓글
·
post-thumbnail

Java Generic을 이해해보자!

저는 Generic이 처음에 그냥 `와 같은 형태인줄만 알았습니다. List` 이런 것을 보며 이제 왜 제네릭의 예시인지 이해하지 못 했습니다. 그래서 공부를 하며 Generic을 이해하기 위한 여정을 기록해보았습니다. 아래 순서를 따라 가며 Generic을 이해해 봅시다! 본 글에서 알아볼 내용 > - 제네릭 정의와 장점 및 기능 제네릭과 공변성, 반공변성, 무공변성 힙 오염과 제네릭과의 관계 제네릭 이란? > 간결하게 말하면 타입을 파라미터화 한 것입니다. > List 을 예시로 들어볼까요? 아래 그림은 Java8 docs에 있는 List 인터페이스에 대한 설명입니다. 즉 타입을 외부에서 지정해서 넘겨받아서 사용한다는 의미입니다. ![](https://velog.velcdn.com/images/l_cloud/post/650fca13-b451-4bba-8cdb-cd7375e8efa9/image.p

2023년 8월 15일
·
1개의 댓글
·
post-thumbnail

자바 정복 일기 - Generic과 Enum

1. Generic > ## 제네릭(Generic)이란? 자바에서 Generic이란 클래스 내부에서 정하는 것이 아닌 사용자 호출에 의해 타입이 지정되는 것을 의미 즉, 특정 타입의 변수형에 지정되는 것이 아닌 필요에 의해 여러 가지 타입을 사용하고 싶을 경우 사용 > ## 제네릭(Generic) 타입이란? 제네릭 타입은 타입 파라미터를 가지는 클래스와 인터페이스를 지칭 제네릭 타입은 클래스 및 인터페이스 이름 뒤에 ""를 쓰고 타입 파라미터(T)를 명시해야 함 타입 파라미터란? • 타입 파라미터는 제네릭 클래스/인터페이스에 사용되며 타입이 정해지지 않은 파라미터<

2023년 8월 13일
·
0개의 댓글
·
post-thumbnail

Next.js + TypeScript 내용 정리

Next.js tsconfig.json 타입스크립트 컴파일러의 동작을 설정하는 '설정 파일'로서, 컴파일 시 어떤 옵션을 사용하고 어떤 파일을 포함 또는 제외할지를 정의합니다. 파일 확장자 그대로 json 형태로 작성되어 있습니다. 선언 파일(Declaration File) 타입스크립트의 선언 파일은 확장자를 가진 파일을 의미합니다. JS는 동적 언어로 정적인 타입 정보가 부족한 경우가 많으므로, 타입스크립트 컴파일을 위해 코드 또는 외부 라이브러리의 타입 정보를 정의해주는 선언 파일을 사용합니다. CommonJS vs. ES6(ECMAScript2015) CommonJS와 ES6 (ECMAScript 2015)는 둘 다 모듈 시스템의 다른 접근 방식을 나타냅니다. 이 두 가지 모듈 형식은 JavaScript 코드를 구조화하고 모듈화하는 데 사용됩니다. Node.js에서는 기본적으로 CommonJS 모듈 시스템을 사용합니다. CommonJS는 No

2023년 8월 13일
·
0개의 댓글
·

TypeScript (5)

Generic 함수 함수 만들때 안에 파라미터를 입력하는데 타입스크립트를 사용하면 파라미터로 타입을 입력할 수도 있다 안에 집어 넣으면 된다 * 무슨 의미인지 바로 알아보자 * 이런 array의 첫 자료를 그대로 출력해주는 함수를 만들었다고 합시다. a를 출력해보면 타입이 unknown 타입이다 * 타입스크립트는 타입을 알아서 변경해주지 않습니다. * 따라서 을 출력해도 a는 분명이 숫자가 맞지만 아직 타입은 unknown 타입이기 때문에 이 연산도 에러가 발생한다 함수에 불확실한 unknown, any, union 타입을 입력하면 나오는 값도 unknown, any, union 타입이고, 이 때문에 일어나는 문제들이 많다. 해결책 narrowing 단점: 귀찮음 애초에 타입을 파라미터로 함수에 미리 입력하는 방법도 있습니다. 그럼 원하는 곳에 가변적으로 타입지정 가능 이 방식을 Generic이

2023년 8월 11일
·
2개의 댓글
·