는 를 비교할 수있는 것과 같은 의미는 무엇입니까?
-
19-08-2019 - |
문제
~ 안에 Java 1.4.2, 수업 java.math.BigInteger
인터페이스를 구현합니다 Comparable
, Serializable
.
~ 안에 Java 1.5.0, 수업 java.math.BigInteger
인터페이스를 구현합니다 Serializable
, Comparable<BigInteger>
.
이것은 내가 물어 보는 데 도움이되는 예일뿐입니다. <
그리고 >
. 내가 정말로 궁금해하는 것은 <
그리고 >
물건.
내 질문은 세 가지입니다.
- 무엇을합니까
<BigInteger>
의 일부implements
진술은 의미가 있습니까? - 그 구문은 무엇입니까?
- 그리고 그것은 무엇을합니까?
추신 : Google을 위해 정말 어렵습니다 <
그리고 >
그리고 검색 할 수 없습니다 <
그리고 >
처음에.
감사!
해결책
읽기 Java Generics 튜토리얼. 각도 브래킷 사이의 것은 유형 매개 변수입니다. 비교할 수있는 것은 일반적인 클래스이며,이 경우 각도 브래킷은 클래스가 다른 bigintegers와 비교할 수 있음을 의미합니다.
이 경우 조금 더 설명하려면 비교할 수있는 Javadoc 1.5에서. 그것이 선언되어 있습니다 Comparable<T>
, 그리고 그게 compareTo
메소드는 유형의 인수를 가져옵니다 T
. T는 인터페이스가 사용될 때 "채워진"유형 매개 변수입니다. 따라서이 경우 구현을 선언합니다 Comparable<BigInteger>
당신이 있어야한다는 것을 암시합니다 compareTo(BigInteger o)
방법. 다른 클래스가 구현 될 수 있습니다 Comparable<String>
그것을 구현해야한다는 것을 의미합니다 compareTo(String o)
방법.
바라건대 위의 스 니펫의 이점을 볼 수 있기를 바랍니다. 1.4의 서명 compareTo
만 가져갈 수있었습니다 Object
모든 종류의 클래스가 비교할 수 있었고 필요한 것을 정확히 알 수있는 방법이 없었기 때문에. 그러나 제네릭을 사용하면 특정 클래스와 관련하여 비교할 수 있음을 지정한 다음 해당 클래스를 매개 변수로만 취하는보다 구체적인 비교 방법을 작성할 수 있습니다.
여기의 이점은 두 가지입니다. 첫째, 당신은 할 필요가 없습니다 instanceof
방법의 구현에서 확인 및 캐스트. 둘째, 컴파일러는 컴파일 타임에 훨씬 더 많은 유형 확인을 수행 할 수 있습니다. Comparable<BigInteger>
, 유형이 일치하지 않기 때문에. 컴파일러가이를 지적 할 수있는 것이 훨씬 낫습니다. 이는 일반적으로 비 게 릭 코드에서 발생했던 런타임 예외를 유발하는 것이 아니라
다른 팁
나는 그것이 제네릭이라고 확신합니다
http://java.sun.com/j2se/1.5.0/docs/guide/language/generics.html
나는 비슷한 것을 물었다 (c#) 유용한 정보가 있습니다. 방법은 무엇입니까u003CClassName> 평균?