2010-12-13 18 views
6

जोडा का AbstractInstant इंटरफ़ेस Comparable<AbstractInstant> के बजाय कच्चे प्रकार Comparable को बढ़ाता है, जो Java best practices का उल्लंघन करता है। विशेष रूप से, इसका मतलब है कि मैं दिनांक समय उपयोग नहीं कर सकते इस तरह एक वर्ग parameterize करने के लिए:जोडा इंस्टेंट कच्चे प्रकार का तुलना क्यों करते हैं?

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 कि एक समाधान (के प्रयोजनों के लिए किसी अन्य वर्ग में datetime लपेटकर पता चलता है: हालांकि, यह दिनांक समय के साथ काम करने के लिए, उन मैं कूड़े कच्चे प्रकार के साथ अपने खुद के कोड और दबे हुए चेतावनी है तुलना), लेकिन मुझे नहीं पता कि यह क्यों जरूरी है। मेरा प्रश्न तो यह है:

  1. क्या किसी को पता है कि क्यों Joda एक कच्चे प्रकार प्रदान कर रहा है, या
  2. यह एक बग मैं पुस्तकालय देखरेख करने के लिए रिपोर्ट करना चाहिए है?
+1

लगभग एक साल बाद इस उत्तर में आने वाले लोगों के लिए सिर्फ एक नोट: जोडा 2.0 जेनरिक का समर्थन करता है, इसलिए यह इस समस्या को हल करता है। – Snekse

उत्तर

2

जोडाटाइम जावा 1.4 पर काम करने के लिए डिज़ाइन किया गया है, और इसलिए जेनिक्स समेत किसी भी जावा 5 सुविधाओं का उपयोग नहीं करता है।

तो हाँ, आपको कुछ मामलों में उस बॉयलरप्लेट चेतावनी दमन सामग्री को जोड़ने की आवश्यकता है।

+1

यह "बॉयलरप्लेट चेतावनी दमन" नहीं है। मुझे जावा सर्वोत्तम प्रथाओं के उल्लंघन में, एक सामान्य तुलनात्मक-आधारित वर्ग का इंटरफ़ेस बदलना होगा। अगर मुझे उस वर्ग के स्रोत कोड तक पहुंच नहीं है, तो मैं इसे नहीं कर सका। –

+0

@chrispy: ठीक है, काफी मेला। मुद्दा यह है कि आप इसके साथ अटक गए हैं। – skaffman

+0

हे, यह सच है। –

संबंधित मुद्दे