개인 재정 프로그래밍 Java : Generics에 관한 모든 것

프로그래밍 Java : Generics에 관한 모든 것

비디오: 토비의 봄 TV 스페셜 - 강대명 - 캐시의 모든 것 2024

비디오: 토비의 봄 TV 스페셜 - 강대명 - 캐시의 모든 것 2024
Anonim

자바의 원래 디자인 목표 중 하나는 언어를 최대한 단순하게 유지하는 것이 었습니다. 언어 개발자는 불필요하게 복잡한 C ++ 기능을 사용하여 창 밖으로 던져 넣었습니다. 결과는 우아하고 세련된 언어였습니다. 어떤 사람들은 언어가 너무 매끄 럽다고 말했습니다.

몇 년 동안 논의와 붕괴 이후 자바는 좀 더 복잡해졌습니다. 2004 년까지 Java에는 enum 유형, 향상된 for 루프, 정적 가져 오기 및 기타 흥미로운 새로운 기능이있었습니다. 그러나 가장 많이 언급 된 기능은 제네릭의 도입이었습니다.

ArrayList people = new ArrayList ();

자바 5에서는 새로운 것을 사용했습니다. 예전 자바에서는

ArrayList people = new ArrayList (); 그 당시 ArrayList는 숫자, 계정, 방, 문자열 등 무엇이든 넣기를 원하는 거의 모든 것을 저장할 수있었습니다. ArrayList 클래스는 매우 다재다능했지만이 다재다능 함으로 인해 두통이있었습니다. ArrayList에 무엇이든 넣을 수 있다면, ArrayList에서 벗어나는 것을 쉽게 예측할 수 없습니다.

ArrayList things = new ArrayList (); 소지품. 추가 (새 계정 ()); 계정 myAccount = 가지. get (0); // 사용하지 마십시오. 그것은 나쁜 코드입니다.

세 번째 줄에서 get (0)을 호출하면 things 컬렉션의 가장 초기 값을 가져옵니다. get (0) 호출은 괜찮지 만, 컴파일러는 myAccount에 대한 할당 시도를 질식시킵니다. 세 번째 줄에는 myAccount 변수에 물건 목록에서 얻은 내용을 채울 수 없다는 메시지가 표시됩니다.

 - 

제네릭의 도입으로이 문제가 해결되었습니다:

ArrayList

things = new ArrayList

(); 소지품. 추가 (새 계정 ()); 계정 myAccount = 가지. get (0); //이 코드를 대신 사용하십시오. 좋은 코드입니다.

두 곳을 추가하면 컴파일러가 Account 인스턴스를 저장한다는 것을 알려줍니다. 따라서 이전 코드의 세 번째 행에서는 things 컬렉션에서 값을 얻습니다. 그런 다음 물건에는 Account 객체 만 저장되므로 myAccount가 새 값을 참조하게 만들 수 있습니다.

Java 5.0에서는 Java에 제네릭을 추가했습니다. 그러나 Java 5.0이 탄생하자마자 프로그래머는 generics 코드가 얼마나 어색한 지 알게되었습니다.결국 제네릭 내에서 제네릭을 만들 수 있습니다. ArrayList는 일련의 배열을 포함 할 수 있으며 각 배열은 ArrayList가 될 수 있습니다. 따라서

ArrayList

mess = new ArrayList

();를 작성할 수 있습니다.

그 혼란 선언의 모든 반복은 프로그래머에게 두통을 안겨줍니다! 이 추함을 피하기 위해 Java 7 이상 버전에는  다이아몬드 연산자 ,

가 있습니다. 다이아몬드 연산자는 Java가 일반 선언의 앞 부분에 미친 듯이 복잡한 것을 다시 사용하도록 알려줍니다.

이 예에서 를 한 번만 쓰지 만

를 다시 사용하도록 Java에 지시합니다. 간소화 된 Java 7 코드의 모습은 다음과 같습니다.

ArrayList mess = new ArrayList ();

Java 7 및 이후 버전에서 두 가지 혼란 선언 (ArrayList []가 두 번 발생하는 원래의 불쾌한 선언 또는 다이아몬드 연산자와 하나의 ArrayList [] 만 사용하는 유선형 (다소 완고한) 선언을 작성할 수 있습니다. 발생.  예, 간소화 된 코드는 여전히 복잡합니다. 그러나 모든 ArrayList [] 반복이 없으면 간소화 된 코드가 덜 번거 롭습니다. Java 7 다이아몬드 연산자는 무언가를 잘못 복사하고 코드에 큰 오류가있을 가능성을 한꺼번에 없애줍니다.

프로그래밍 Java : Generics에 관한 모든 것

편집자의 선택

Photoshop Elements 11 - Stone

Photoshop Elements 11 - Stone

을 사용하여 Stone Out을 조각하는 방법 Photoshop Elements 11의 도구를 입력하여 텍스트와 같은 모양의 선택 영역을 만든 다음 이미지 자체를 해당 유형의 채우기로 사용합니다. 예를 들어 꽃 테마 웹 페이지를 만드는 경우 꽃 그림을 텍스트 채우기로 사용할 수 있습니다. 유형 선택을 사용하면 모든 부분을 잘라낼 수 있습니다.

Photoshop Elements 9에서 여러 파일을 일괄 처리하는 방법 - 여러 개의 인형이있는 경우

Photoshop Elements 9에서 여러 파일을 일괄 처리하는 방법 - 여러 개의 인형이있는 경우

여러 파일에 공통적으로 적용 할 편집 기능을 사용하면 Photoshop Elements에서 이러한 변경 사항을 일괄 적으로 처리 할 수 ​​있습니다. 단일 메뉴 명령을 사용하여 파일 형식을 변경하고 파일 속성을 변경하고 공통 파일 기본 이름을 추가 할 수 있습니다. 파일 이름 바꾸기는 내보내기 명령의 일부일 수도 있고 사용할 수도 있습니다.

편집자의 선택

승마 2012 런던 하계 올림픽 - 인형

승마 2012 런던 하계 올림픽 - 인형

승마 (말의 화려한 이름) 경쟁 런던 2012 하계 올림픽은 조련사, 이벤트 및 점프의 세 가지 분야로 구성됩니다. 각 분야는 팀과 개인 메달을위한 기회를 제공합니다. 대회는 7 월 28 일부터 31 일까지 개최됩니다. 조련사 경연 대회는 8 월 2 일부터 9 일까지 개최됩니다. 점프 대회는 ...

동계 올림픽에서의 자유형 스키 - 인형

동계 올림픽에서의 자유형 스키 - 인형

프리 스타일 스키는 동계 올림픽의 X 게임 이벤트 중 하나입니다. . 자유형 스키에서는 경쟁자가 언덕 꼭대기에서 바닥까지 다양한 행사를 수행합니다. 프리 스타일 스키는 기술 스키의 가장 중요한 부분을 차지하며 스노우 보드에서 트릭을 만들어내는 기술과 결합되어 있습니다.

필드 2012 런던 하계 올림픽의 이벤트 - 인형

필드 2012 런던 하계 올림픽의 이벤트 - 인형

스프린트, 릴레이 및 도로 경주 이외에도 2012 런던 하계 올림픽 육상 경기에는 점프 및 던지기 경기가 포함됩니다. 남자와 여자는 높은 점프, 긴 점프, 트리플 점프, 장대 높이뛰기 등의 4 가지 점프 이벤트와 총구, 원반, 창 던지기 및 망치와 같은 네 가지 투구 이벤트에서 경쟁합니다. 필드 이벤트 ...

편집자의 선택

Excel의 유용한 범위 객체 메소드 2016 VBA 프로그래밍 - VBA 메소드가 수행하는

Excel의 유용한 범위 객체 메소드 2016 VBA 프로그래밍 - VBA 메소드가 수행하는

엑셀 2016의 액션. Range 객체는 수십 개의 메소드를 가지고 있지만, 이들 중 대부분은 필요하지 않습니다. 여기서는 가장 일반적으로 사용되는 Range 객체 메소드를 찾습니다. Select 메서드 Select 메서드를 사용하여 셀 범위를 선택합니다. 다음 문은 ...

시나리오 관리자를 사용하여 대출 계산 모델링 방법 - 더미

시나리오 관리자를 사용하여 대출 계산 모델링 방법 - 더미

시나리오 관리자는 목표 탐색 데이터 탭의 가정 분석 섹션에 데이터 테이블이 있습니다. 다른 유용한 도구와 함께 그룹화하면 시나리오 관리자가 중요한 도구임을 믿게 될 것입니다. 그러나 유용한 이름과 좋은 회사가 있음에도 불구하고 ...

더 나은보고 모델을 위해 Power Query와 Power Pivot을 함께 사용 - Power Pivot을 사용하여 더미

더 나은보고 모델을 위해 Power Query와 Power Pivot을 함께 사용 - Power Pivot을 사용하여 더미

Power Query를 함께 사용하면 관리 및 유지 보수가 쉬운보고 모델을 만들 수 있습니다. 보고 모델은보고 메커니즘이 구축되는 기초를 제공합니다. 데이터를 가져오고, 변환하고, 모양을 만들고, 집계하는보고 프로세스를 작성하면 본질적으로보고 모델을 구축하게됩니다. 잘못 작성하는 중 ...