Paths.get vs Path.of


20

जहाँ तक मैं बता सकता हूँ, Paths.getऔर Path.ofएक ही वस्तु में एक या एक से अधिक तारों को मोड़ते हुए, बिल्कुल एक ही काम करता हुआ प्रतीत होता है Path; प्रलेखन https://docs.oracle.com/javase/8/docs/api/java/nio/file/Paths.html#get-java.lang.String-java.lang.String...- और https: //docs.oracle.com/en/java/javase/13/docs/api/java.base/java/nio/file/Path.html#of(java.lang.String,java.lang.String ... ) एक ही शब्द का उपयोग करें। क्या वे वास्तव में समान हैं?

Path.ofबाद में पेश किया गया था। अनुमान: यह एक सुसंगत Foo.ofशैली के लिए पेश किया गया था । उस मामले में, इसे संगति / सौंदर्य के आधार पर बेहतर माना जाएगा?


5
मेरे विचार में तुम सही हो। जावा चर्चा सूचियों के बारे में एक त्वरित खोज ने इसे लाया: mail.openjdk.java.net/pipermail/nio-dev/2018-March/004810.html फिर भी एक उत्तर लिखने के लिए पढ़ना।
जोहान्स कुह्न

2
मुझे पसंद है Path.ofक्योंकि इसे अतिरिक्त आयात की आवश्यकता नहीं है
ZhekaKozlov

जवाबों:


22

दरअसल, Path.ofबाद में पेश किया गया था।

अनुमान: यह एक सुसंगत Foo.ofशैली के लिए पेश किया गया था ।

मेलिंग सूची संग्रह से, इस विधि को एक बार बुलाया गया थाPath.get :

Java.nio.file में मुख्य परिवर्तन पथ और पथ में हैं।

यह पैच Paths.get () विधियों को Path.get () में स्थिर विधियों की प्रतिलिपि बनाता है और पूर्व को बाद के संबंधित तरीकों को कॉल करने के लिए संशोधित करता है। पाथ स्पेसिफिकेशन को थोड़ा साफ किया जाता है न कि पाथ को संदर्भित करने के लिए और न ही, उदाहरण के लिए, "(पथ देखें)।" पथ को इंगित करने के लिए @implSpec एनोटेशन जोड़े जाते हैं ताकि यह पता चले कि विधियाँ केवल पथ में अपने समकक्षों को बुलाती हैं।
...

इसे बाद में बदल दिया गया जब ब्रायन गोएत्ज़ ने इसके अनुरूप होने का सुझाव दियाFoo.of :

अलग-अलग, ब्रायन गोएट्ज ने ऑफ-लिस्ट का सुझाव दिया कि यह अधिक सुसंगत होगा यदि इन कारखाने विधियों को "का" नाम दिया गया था, तो मुझे लगता है कि वेबरेव को अपडेट किया जाएगा कि यह कैसा दिखता है।

अब आपके अंतिम प्रश्न पर: "उस स्थिति में, इसे संगति / सौंदर्य के आधार पर बेहतर माना जाएगा?"
में प्रारंभिक मेल ब्रायन Burkhalter ने कहा कि वह में नई विधि के सभी संदर्भ अद्यतन Path:

Java.base में सभी स्रोत फ़ाइलें Paths.get () को Path.get () में बदलने और Paths के लिए आयात को निकालने के लिए संशोधित की गई हैं। ...

इसलिए मैं इसलिए निष्कर्ष निकालूंगा कि Path.ofवास्तव में यह बेहतर है Paths.get
वास्तव में, यदि आप जावा 13 के लिए Javadoc कोPaths देखते हैं तो आपको यह नोट मिलेगा:

एपीआई नोट : इस वर्ग में परिभाषित विधियों के माध्यम से विधियों के माध्यम से
प्राप्त करने की सिफारिश की जाती है क्योंकि इस वर्ग को भविष्य के रिलीज में पदावनत किया जा सकता है।PathPath.ofget


5
ध्यान रखें कि NIO.2 को जावा 7 में पेश किया गया था जब इंटरफेस में स्थिर तरीके संभव नहीं थे। तो यह एक साथी वर्ग की जरूरत Paths। इंटरफ़ेस की फ़ैक्टरी विधि का उपयोग करने से प्रकार की संख्या कम हो जाती है, कोड से निपटना पड़ता है। नामकरण शैली केवल एक और बिंदु है जिसे संशोधित किया गया है क्योंकि यह अवसर था।
होल्गर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.