2009-10-30 19 views
7

मैं सिर्फ उत्पादन चालू करना चाहते हैं और मैंआयात java.util। * के बीच क्या अंतर है। और java.util.Date आयात करें; ?

import java.util.*; 
शुरुआत में

, और

System.out.println(new Date()); 

लिखा मुख्य भाग में।

लेकिन मैं क्या मिल गया था कुछ इस तरह:

[email protected] 

जब मैं import java.util.Date; करने के लिए आयात कोड पूरी तरह से काम करता है बदलने के लिए, क्यों?

====================================

समस्या थी, ठीक है, मेरी स्रोत फ़ाइल "Date.java" थी, यही कारण है।

खैर, यह सब मेरी गलती है, मैं हर किसी के आसपास उलझन; पी

और नीचे हर किसी के लिए धन्यवाद। यह वास्तव में आपके लिए नाइस है;)

+1

आपके पास अन्य आयात हो सकते हैं - हमें कुछ संकल्पनीय कोड दिखाई दें जो यह दिखाता है कि यह – Mark

+1

यह भी देखें: http://stackoverflow.com/questions/147454/why-is-using-a-wild-card-with-a- जावा-आयात-कथन-बुरा, http://stackoverflow.com/questions/187453/import-package-vs-import-package-specifictype, http://stackoverflow.com/questions/585268/which-would-make- ए-क्लास-फाइल-बड़ा-आयात-जावा-अल्ट-या-ए-गुच्छा-या-एकल-आईपी, http://stackoverflow.com/questions/1553909/is-there-any-difference-between-class- आयात-और-पैकेज-आयात-इन-जावा – finnw

+1

वोटिंग अप क्योंकि कभी-कभी एक अच्छा काउंटर-उदाहरण कुछ भी सहायक होता है। :) – mtruesdell

उत्तर

11

आपके पास शायद कुछ अन्य "दिनांक" वर्ग कहीं आयात किया गया है (या आपके पास पैकेज में डेट क्लास है, जिसे आयात करने की आवश्यकता नहीं है)। "आयात java.util। *" के साथ आप "अन्य" तिथि का उपयोग कर रहे हैं। इस मामले में कोड में java.util.Date स्पष्ट रूप से निर्दिष्ट करना सबसे अच्छा है।

या बेहतर, अपनी कक्षाओं "नाम" नामकरण से बचने का प्रयास करें।

+0

आप सही थे, मैंने अपना स्रोत "Date.java" – EthanZ6174

+0

@ EthanZ6174 नाम दिया: आपके लिए अच्छा! कभी भी ऐसा कभी न करें ... –

+2

@ EthanZ6174: जावा पज़लर से इस नमूना सूची में पहेली 7 देखें - http://www.javapuzzlers.com/java-puzzlers-sampler.pdf। यह पुस्तक एक निश्चित है किसी भी जावा प्रोग्रामर के लिए अनुशंसा करें! –

2

आपका प्रोग्राम बिल्कुल आयात java.util के साथ काम करना चाहिए। *; या आयात java.util.Date;। बीच में कुछ और किया जाना है।

+0

प्रश्न का उत्तर देने के लिए धन्यवाद, और मुझे पता था कि उन लोगों के बीच कोई अंतर नहीं है, जब तक कि मैंने src "date.java" नाम नहीं दिया ... :( – EthanZ6174

3
import java.util.*; 

दिनांक कक्षा सहित java.util के भीतर सबकुछ आयात करता है।

import java.util.Date; 

बस तिथि वर्ग आयात करता है।

इनमें से किसी एक को करने से कोई फर्क नहीं पड़ता।

0
but what I got is something like this: [email protected] 
while I change the import to: import java.util.Date; 
the code works perfectly, why? 

"पूरी तरह से काम करता है" से आपका क्या मतलब है? डेट ऑब्जेक्ट को प्रिंट करने का आउटपुट वही है, चाहे आप java.util आयात करें या * java.util.Date। ऑब्जेक्ट्स प्रिंट करते समय आपको प्राप्त होने वाला आउटपुट ऑब्जेक्ट का प्रतिनिधित्व इसी श्रेणी के toString() विधि द्वारा किया जाता है।

+0

नहीं, मैं कक्षा "date.java" नाम देता हूं और यह समस्या है .. – EthanZ6174

4

toString()java.util.Date का कार्यान्वयन कक्षा के आयात के तरीके पर निर्भर नहीं है। यह हमेशा एक अच्छी स्वरूपित तारीख देता है।

toString() आप देख रहे हैं कि किसी अन्य वर्ग से आता है।

विशिष्ट आयात वाइल्डकार्ड आयात पर प्राथमिकता है।

इस मामले

import other.Date 
import java.util.* 

new Date(); 

में other.Date और नहीं java.util.Date को दर्शाता है।

अजीब बात यह है कि

import other.* 
import java.util.* 

आप करते हुए कहा कि आज तक संदर्भ अस्पष्ट है क्योंकि दोनों other.Date और java.util.Date मैचों है एक संकलक त्रुटि देना चाहिए है।

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