मेरे पास एक डिज़ाइन प्रश्न है। नीचे टाइमस्टैम्प इंटरफ़ेसजेनरिक में अच्छी डिजाइन
/**
* <T> Type of Timestamp. For ex: Date, long, Calendar etc
*
*/
public interface TimeStamp<T> extends Comparable<TimeStamp<T>>
{
/**
* Returns the timestamp.
* @return
*/
public T getTimeStamp();
}
मैं मूल रूप से एक List
वर्ग है कि केवल timestamps शामिल कर सकते हैं करना चाहते हैं है। सूची में कुछ भी जोड़ना मूल रूप से टाइमस्टैम्प पर निर्भर करेगा। मेरी सूची वर्ग घोषणा कैसे होनी चाहिए।
अगर मैं रचना के लिए निर्णय लेते हैं, कोड तरह दिखेगा:
public class TimeList<T> implements List<TimeStamp<T>>
{
private List<TimeStamp<?>> list = new ArrayList<TimeStamp<?>>();
//other list methods who will return based on list above
.....
}
लेकिन इसके बाद के संस्करण मतलब नहीं है। उदाहरण के लिए अगर मैं एक वर्ग DefaultTimeStamp implments TimeStamp<Long>
है और
TimeList<DefaultTimeStamp> l = new TimeList<DefaultTimeStamp>();
रूप TimeList का दृष्टांत तब l.add(elem)
को Anycall एक TimeStamp<DefaultTimeStamp>
जो गलत है उम्मीद होगी।
की घोषणा: public class TimeList<TimeStamp<T>> implements List<TimeStamp<T>>
संकलन देना होगा टाइम त्रुटि
क्या मेरी TimeList<Type>
की घोषणा किया जाना चाहिए? अंत में यह सिर्फ एक ही timestamps
क्योंकि सूची में कुछ भी जोड़ने अपने टाइमस्टैम्प पर निर्भर करेगा:
और TimeList घोषणा इस प्रकार है । – Jatin
क्या आप टाइमलिस्ट को टाइमस्टैम्प को किसी भी टी के लिए विशेष टी के लिए रखना चाहते हैं? –
हां। – Jatin