제네릭스를 사용하는 이유 Why Use Generics?
간단히 말해서, 클래스, 인터페이스와 메소드를 정의할 때, 제네릭스로 타입 (클래스와 인터페이스)을 패러미터로 만들 수 있습니다.
메소드 선언에 사용되는 보다 익숙한 포멀 패러미터와 같이, 타입 패러미터는 다른 입력과 동일한 코드를 재사용 할 수 있는 방법을 제공합니다.
차이점은 포멀 패러미터에 대한 입력은 값(values)이고, 타입 패러미터에 대한 입력은 타입이라는 점입니다.
제네릭스를 사용하는 코드는 비-제네릭 코드에 비해 많은 장점을 갖고 있습니다 :
In a nutshell, generics enable types (classes and interfaces) to be parameters when defining classes, interfaces and methods. Much like the more familiar formal parameters used in method declarations, type parameters provide a way for you to re-use the same code with different inputs. The difference is that the inputs to formal parameters are values, while the inputs to type parameters are types.
Code that uses generics has many benefits over non-generic code:
- 컴파일 타임에 보다 강한 타입 체크 Stronger type checks at compile time.
자바 컴파일러는 제네릭 코드에 강한 타입 체킹을 적용해서, 코드가 타입 안전을 위반하는 경우 오류를 발생시킵니다.
컴파일-타임 오류 정정은 런타임 오류 정정 보다 쉬운데, 런타임 오류는 찾기가 어렵습니다.
A Java compiler applies strong type checking to generic code and issues errors if the code violates type safety. Fixing compile-time errors is easier than fixing runtime errors, which can be difficult to find. 캐스트의 제거 Elimination of casts.
제네릭스가 없는 다음 코드 스니펫은 캐스팅이 요구됩니다:
The following code snippet without generics requires casting:List list = new ArrayList(); list.add("hello"); String s = (String) list.get(0);
제네릭스를 사용하여 재작성하면 코드에 캐스팅이 필요없게 됩니다:
When re-written to use generics, the code does not require casting:List<String> list = new ArrayList<String>(); list.add("hello"); String s = list.get(0); // no cast
- 프로그래머가 제네릭 알고리즘을 구현할 수 있게 함.
Enabling programmers to implement generic algorithms.
프로그래머는 제네릭스를 사용하여, 서로 다른 타입의 collections 위에서 작업하는, 커스터마이즈 될 수 있는, 그리고 타입이 안전하고 읽기 쉬운, 제네릭 알고리즘을 구현할 수 있습니다.
By using generics, programmers can implement generic algorithms that work on collections of different types, can be customized, and are type safe and easier to read.
'Java 배우기' 카테고리의 다른 글
Raw Types (0) | 2016.01.24 |
---|---|
제네릭 타입 Generic Types (0) | 2016.01.24 |
Lesson: Generics (Updated) 단원: 제네릭스 (업데이트된) (0) | 2016.01.05 |
Questions and Exercises: Characters and Strings (0) | 2016.01.05 |
Autoboxing and Unboxing 오토박싱과 언박싱 (0) | 2016.01.05 |
댓글