2017-10-24 15 views
1

저는 개인 및 소팅 메소드 및 데이터 구조 라이브러리를 작성하는 중이고 <T extends Comparable<T>>을 사용하여 일반 유형으로 작업 할 수있게하여 클래스를보다 강력하게 만들려고합니다. 이것은 String 유형의 전체 텍스트 파일을 읽거나 compareTo() 메서드가있는 사용자 정의 클래스 객체를 저장할 때 완벽하게 작동합니다. 필자가 확신 할 수없는 것은이 기능을 숫자로 가득 찬 텍스트 파일로 확장하는 방법입니다. 예를 들어 모든 유형이 int입니다. 내 이해에서 int은 기본 유형이며 compareTo()을 포함하여 어떤 메소드도 가지고 있지 않습니다. 이렇게하면 클래스가 int을 받아 들일 수 없게됩니다.원시 객체와 함께 사용되는

  • 내 첫번째 생각은
  • 이 깨끗한 솔루션입니다. object<T>int 포장, 그냥 그것을 공급하는 것입니다, 또는 모범 사례 접근 방식을 더 있는가?

감사합니다.

대답, @dasblinkenlight의 의례 :

  • "자바 팀이 래퍼 클래스를 최적화, 심지어 컴파일러/JVM에 특별한 트릭을 구축하고, 성능이 래퍼에 대한 가능한 한 좋은 것을 보장하기 위해 클래스 "이므로 커스텀 래퍼 클래스를 만드는 것은 이점이 없으며 접근해서는 안됩니다.

수정 :보다 정확한 참조를 위해 수정 된 제목. . 그 java.lang.Integer가 무엇인지입니다 -

+5

''int''에 대해''Integer''와 같은 프리미티브에 래퍼 클래스를 사용하십시오. – f1sh

+0

'int' 대신'Integer' 만 사용할 수 있습니까? 'int i = 0; 정수 iObject = i'? – pirho

답변

6

내 첫번째 생각은 object<T> 각 INT 포장, 그냥 그것을 먹이 당신은 필요가 없습니다

하는 것입니다. 유사한 래퍼 유형은 Java의 다른 모든 원시 유형에 대해 존재합니다.

이 방법이 깨끗한가요? 아니면 최선의 방법이 더 많습니까?

성능 요구 사항에 따라 다릅니다. 래핑 프리미티브가 수용 가능한 경우 (대다수의 응용 프로그램을위한 것임) 작업 방법이 있습니다. 이 방법은 (등, IntStream, LongStream, DoubleStream)은 프리미티브에 대한 스트림에 자바의 포획과 유사한 방식으로, 각 원시 형 특별 클래스를 구축 할 필요가 충분히 빠르지 있다는 가능성 시나리오에서

+0

이것은 내가 찾고있는 일종의 대답입니다. 필자는 java.lang.Integer와 같은 클래스를 이런 종류의 기능에 대한 래퍼로 생각하지 않았습니다. 나는 성능상의 차이가 전혀 없다고 가정하고, 커스텀 래퍼 클래스를 만들지 않을 것인가? –

+2

@ChrisPhillips 오른쪽, 자바 팀은 이러한 래퍼 클래스를 최적화하고 컴파일러/JVM에 특별한 트릭을 작성하여 래퍼 클래스의 성능이 최대한 좋아 졌는지 확인했습니다. – dasblinkenlight