2010-12-13 4 views
6

Joda의 AbstractInstant 인터페이스가 Comparable<AbstractInstant> 대신 원시 유형 Comparable을 확장합니다. 이는 Java best practices을 위반하는 것으로 보입니다. 특히,이 같은 클래스를 매개 변수화 날짜 시간을 사용할 수 있다는 것을 의미한다 : Joda가 원시 형식 Comparable을 확장하는 이유는 무엇입니까?

class Foo<T extends Comparable<? super T>> { 
    public int ct(T a, T b) { 
     return a.compareTo(b); 
    } 
} 

그것은 (이것은 확실히, 더블로 등을 작동) 클래스의 이런 종류의 완벽 유효 나의 이해이었다.

@SuppressWarnings("unchecked") 
class Foo<T extends Comparable> { 
    public int ct(T a, T b) { 
     return a.compareTo(b); 
    } 
} 

가의 목적을 위해 다른 클래스의 날짜 시간을 포장 해결 방법을 (제안하는 related question있다 :하지만, 그것은 날짜 시간으로 작동하도록하기 위해, 나는 쓰레기 내 원시 유형의 코드 및 억제 경고가 비교). 그러나 나는 그것이 왜 필요한지 알지 못합니다. 내 질문은 다음과 같습니다

  1. 사람이 Joda 원시 유형을 확장하는 이유를 알고 있나요, 또는
  2. 이 내가 도서관 관리자들에게보고해야 버그인가?
+1

Jona 2.0은 generics를 지원하므로이 문제를 해결합니다. – Snekse

답변

2

JodaTime은 Java 1.4에서 작동하도록 설계되었으므로 generics를 포함한 Java 5 기능을 사용하지 않습니다.

그래, 일부 경우에는 그 상용구 경고 억제 항목을 추가해야합니다.

+1

"상용구 경고 억제"가 아닙니다. Java 모범 사례를 위반하여 제네릭 Comparable 기반 클래스의 인터페이스를 변경해야합니다. 해당 클래스의 소스 코드에 액세스 할 수 없으면 할 수 없습니다. –

+0

@ chrispy : 좋습니다. 요점은, 당신은 그것에 붙어 있습니다. – skaffman

+0

ㅎ 그건 사실이야. –

관련 문제