개인 재정 프로그래밍 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에 관한 모든 것

편집자의 선택

플립 비디오 인형 치트 시트 - 인형

플립 비디오 인형 치트 시트 - 인형

플립 비디오 캠코더는 가장 사용하기 쉬운 캠코더입니다. 세계. 플립 비디오를 사용하면 비디오를 가리키고 촬영 한 다음 컴퓨터로 비디오를 복사 할 수 있습니다. 몇 번의 클릭 후, 당신은 Facebook, MySpace 및 YouTube에서 귀하의 작품을 과시하고 있습니다. Flip의 버튼을 해독함으로써 비디오를 고통없이 촬영하는 방법을 찾으십시오. 알아보기 ...

귀하의 디지털 필름에 대한 개인 상영 - 인형

귀하의 디지털 필름에 대한 개인 상영 - 인형

오늘, DSLR 필름 심사. HD가 장착 된 정교한 대형 스크린 TV는 여러 스피커의 서라운드 사운드 스테레오와 함께 아주 좋은 간식을 제공합니다. 따라서 영화 밤을 장소에서 쉽게 주최 할 수 있으며 영화관에 갈 수도 있습니다. ...

디지털 영화에 정적 제목을 추가하는 방법 - 인형

디지털 영화에 정적 제목을 추가하는 방법 - 인형

초연 요소는 다양한 선택을 제공합니다 DSLR 영화의 타이틀 선택 항목, 하위 3 분의 1 로케이터 정보. 로케이터 정보는 뉴스 세그먼트 및 다큐멘터리에서 장면의 사람이나 장소를 설명하는 데 사용되는 ID와 같습니다. 사람의 경우 이름과 설명이라는 두 줄로 구성됩니다. 예를 들어, Charles Dickens / Writer, ...

편집자의 선택

관계 속의 분노를 다루는 - 인형

관계 속의 분노를 다루는 - 인형

우리 모두는 때때로 파트너들과 화를 낸다. 분노가 당신과 당신의 관계에 미치는 파괴적인 영향을 최소화하는 데 도움이되는 다음 요령을 시도하십시오. 당신이 분노의 징후를 처음 알기 시작할 때, 당신의 파트너에게 무슨 일이 일어나는지 물어보십시오. 화가 난 사람을 상처 입히려 고합니다.

자폐증 진단의 영향 - 인형

자폐증 진단의 영향 - 인형

자폐아를 찾는 것이 매우 어렵습니다. 앞으로의 길은 쉬울 것이라고 아무도 말할 수 없습니다. 자녀의 생년월일과 본인의 생년월일에 관한 스크립트를 다시 작성해야 할 수도 있습니다. 당신은 지금 다루어야 할 새로운 쟁점, 압박 및 결정들을 가지고 있습니다. 그리고 주변 사람들은 ...

당신이 종속인지 결정하기 - 인형

당신이 종속인지 결정하기 - 인형

다음 증상 목록에서 확인하십시오. 당신은 모두가 공손 할 필요는 없으며, 코펜던트의 심각성 정도가 있습니다. 치료를하지 않으면 시간이 지남에 따라 코드 종속성이 악화되지만 도움을 받아 복구 할 수 있고 작업에서 훨씬 더 효과적 일 수 있습니다 ...

편집자의 선택

짧은 명상 묵상 시도 - 인형

짧은 명상 묵상 시도 - 인형

당신의 마음을 집중할 수있는 능력은 마음 챙김 명상을 통해 가장 강력하게 개발됩니다. Mindfulness 명상 중 하나는 호흡의 mindfulness입니다. 이것은 숨을 의식적으로 인식하는 것입니다. 명상을 스스로 시도하려면 다음 단계를 따르십시오. 자신의 호흡 감을 알아야합니다. 변경할 필요가 없습니다 ...

마음가짐의 세 측면 - 인형

마음가짐의 세 측면 - 인형

마음가짐은 세 가지 측면으로 주의 깊은 인식. 이 목록을 인쇄하여 핀이 무엇인지 생각 나게하십시오. 의도 - 당신의 의도는 당신이 마음가짐을 연습함으로써 얻고 자하는 것입니다. 스트레스를 줄이고 감정적 인 균형을 유지하거나 발견 할 수 있습니다.

다른 명상을 시도하십시오 - 인형

다른 명상을 시도하십시오 - 인형

명상 확장이라는 인식은 명상 확장의 중심에 있습니다. Mindfulness 명상 연습. 앉는 자리는 수천 년 동안 명상을 위해 그리고 정당한 이유로 사용되었습니다. 어떻게 평소에 앉아 있니? 당신이 대부분의 사람들과 비슷하다면, 아마 의자 나 소파 뒤에 기대어집니다. 네가 괜찮다면 ...