Java 범주화의 이점
개요:
자바 범주형은 자바 SE 1.5의 새로운 특성으로 범주형의 본질은 매개 변수화 유형이다. 즉, 조작된 데이터 형식이 하나의 매개 변수로 지정된다는 것이다.이런 매개 변수 유형은 클래스, 인터페이스와 방법의 생성에 사용할 수 있는데 각각 범용 클래스, 범용 인터페이스, 범용 방법이라고 부른다.
범용 (Generic type 또는generics) 은 자바 언어의 형식 시스템에 대한 확장으로 형식에 따라 매개 변수화할 수 있는 클래스를 만들 수 있습니다.형식 매개 변수는 매개 변수화 형식을 사용할 때 지정한 형식의 자리 차지 문자로 볼 수 있습니다. 방법의 형식 매개 변수는 실행할 때 전달되는 값의 자리 차지 문자와 같습니다.
컬렉션 프레임워크(Collection framework)에서 범용 동기를 볼 수 있습니다.예를 들어 맵 클래스는 맵에 클래스의 대상을 추가할 수 있습니다. 가장 흔히 볼 수 있는 맵에 특정한 유형(예를 들어 String)의 대상을 저장합니다.
지도 때문에.get()은 Object를 반환하는 것으로 정의되므로 일반적으로 Map을 사용해야 합니다.get () 의 결과는 다음 코드와 같이 원하는 유형으로 강제로 변환됩니다.
Map m = new HashMap();
m.put("key", "blarg");
String s = (String) m.get("key");
프로그램을 컴파일하려면 get () 의 결과 강제 형식을 String으로 변환해야 하며, 결과가 정말 String이었으면 합니다.그러나 누군가가 이 맵에 String이 아닌 것을 저장했을 수도 있습니다. 그러면 위의 코드는 ClassCast Exception을 던집니다.이상적인 경우, m는 맵입니다. 이것은 String 키를 String 값에 비추는 것입니다.이것은 코드의 강제 형식 변환을 없애고 추가 형식 검사 층을 얻을 수 있습니다. 이 검사 층은 오류 형식의 키나 값을 집합에 저장하는 것을 방지할 수 있습니다.이것이 바로 범형이 하는 일이다.
일반적인 이점
Java 언어에 범주를 도입하는 것은 비교적 큰 기능 강화이다.언어, 유형 시스템과 컴파일러에 비교적 큰 변화가 생겼을 뿐만 아니라 범형을 지원할 뿐만 아니라 라이브러리도 크게 개편했기 때문에 많은 중요한 종류, 예를 들어 집합 프레임워크는 이미 범형화되었다.
이것은 많은 장점을 가져왔다.
1, 유형 안전.범주형의 주요 목표는 자바 프로그램의 유형 안전을 향상시키는 것이다.범용으로 정의된 변수의 유형 제한을 사용함으로써 컴파일러는 훨씬 높은 수준에서 유형 가설을 검증할 수 있다.범용이 없다. 이런 가설은 프로그래머의 머릿속에만 존재한다. (또는 행운이라면 코드 주석에도 존재한다.)
2, 강제 유형 변환을 제거합니다.범용적인 장점 중 하나는 원본 코드의 많은 강제 형식 변환을 없애는 것이다.이것은 코드를 더욱 읽을 수 있게 하고 오류 기회를 감소시켰다.
3, 잠재적인 성능 이익.범형은 비교적 큰 최적화에 가능성을 가져온다.범주형의 초기 구현에서, 컴파일러는 강제 형식 변환 (범주형이 없으면 프로그래머가 이러한 강제 형식 변환을 지정) 을 생성된 바이트 코드에 삽입합니다.그러나 컴파일러에 더 많은 유형의 정보가 사용될 수 있다는 사실은 향후 버전의 JVM 최적화에 도움이 될 것입니다.범용 구현 방식 때문에 JVM이나 클래스 파일 변경이 거의 필요 없습니다.모든 작업은 컴파일러에서 이루어지며, 컴파일러는 범용 (강제 형식 변환) 이 없을 때 쓴 코드와 유사하며, 형식의 안전을 더욱 확보할 수 있을 뿐이다.
Java 언어의 범용 도입의 장점은 안전하고 간단하다는 것이다.범형의 장점은 컴파일할 때 유형의 안전을 검사하고 모든 강제 변환이 자동적이고 은밀하게 되어 코드의 중용률을 높이는 것이다.
범용 모델은 사용 중에 몇 가지 규칙과 제한이 있다.
1. 범용 유형 매개 변수는 클래스 유형 (사용자 정의 클래스 포함) 일 수 있을 뿐 단순 유형일 수 없습니다.
2. 같은 범주형은 여러 버전에 대응할 수 있고 매개 변수 유형이 확실하지 않기 때문에 서로 다른 버전의 범주형 클래스 실례는 호환되지 않는다.
3. 범용 유형 매개 변수는 여러 개 있을 수 있다.
4. 일반적인 매개 변수 형식은 extends 문장을 사용할 수 있습니다. 예를 들어
5, 범용 매개변수 유형은 와일드카드 유형일 수도 있습니다.예를 들어 ClassclassType = Class.forName(Java.lang.String);
범형은 인터페이스, 방법 등이 있고 내용이 많아서 시간이 걸려야 이해하고 익히며 응용할 수 있다.여기서 제가 범형을 이해했을 때 쓴 두 가지 예(보는 인상에 따라 쓴 것)를 제시합니다. 같은 기능을 실현했습니다. 하나는 범형을 사용했고 하나는 사용하지 않았습니다. 비교를 통해 범형의 응용을 빨리 배울 수 있습니다. 이것은 기본적으로 범형의 70% 내용을 배웠습니다.
읽어주셔서 감사합니다. 여러분에게 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.