अजगर में आप एक कर सकते हैं:
from a import b as c
आप जावा में यह कैसे करेंगे, क्योंकि मेरे पास दो आयात हैं जो टकरा रहे हैं।
अजगर में आप एक कर सकते हैं:
from a import b as c
आप जावा में यह कैसे करेंगे, क्योंकि मेरे पास दो आयात हैं जो टकरा रहे हैं।
जवाबों:
जावा में कोई आयात अलियासिंग तंत्र नहीं है। आप एक ही नाम से दो वर्गों का आयात नहीं कर सकते हैं और दोनों को अयोग्य घोषित कर सकते हैं।
एक वर्ग को आयात करें और दूसरे के लिए पूरी तरह से योग्य नाम का उपयोग करें, अर्थात
import com.text.Formatter;
private Formatter textFormatter;
private com.json.Formatter jsonFormatter;
import [fully-qualified-name] as [ident]
:। "जैसा" कीवर्ड जावा में भी फिट नहीं लगता है, एक विकल्प लगभग है जो सी # का उपयोग करता है import [ident] = [fully-qualified-name]
:।
जैसा कि पहले ही बताए गए अन्य उत्तर हैं, जावा यह सुविधा प्रदान नहीं करता है।
इस सुविधा के कार्यान्वयन के लिए कई बार अनुरोध किया गया है, उदाहरण के लिए JDK-4194542: वर्ग नाम अलियासिंग या JDK-4214789: आयातित प्रकार का नाम बदलने के लिए आयात बढ़ाएँ ।
टिप्पणियों से:
यह एक अनुचित अनुरोध नहीं है, हालांकि शायद ही आवश्यक है। पूरी तरह से योग्य नामों का सामयिक उपयोग एक अनुचित बोझ नहीं है (जब तक कि पुस्तकालय वास्तव में सही और बाएं समान सरल नामों का पुन: उपयोग नहीं करता है, जो कि खराब शैली है)।
किसी भी घटना में, यह भाषा परिवर्तन के लिए मूल्य / प्रदर्शन के बार को पारित नहीं करता है।
इसलिए मुझे लगता है कि हम जल्द ही जावा में इस सुविधा को नहीं देखेंगे: -पी
यह शायद ध्यान देने योग्य है कि ग्रूवी में यह सुविधा है :
import java.util.Calendar
import com.example.Calendar as MyCalendar
MyCalendar myCalendar = new MyCalendar()
import com.example.{Calendar => MyCalendar}
import com.example.Calendar as MyCalendar
:।
class MyCalendar extends com.example.Calendar {}
? यह आदर्श या सुंदर नहीं है, लेकिन यह अधिकतर उद्देश्यों को पूरा करना चाहिए, जैसे कि, प्रतिबिंब। यदि आवश्यक हो, तो आप इसे टिप्पणी के साथ भी प्रस्तुत कर सकते हैं /* import com.example.Calendar as MyCalendar */
।
आज मैंने इस अलियासिंग फीचर के बारे में OpenJDK में एक JEP ड्राफ्ट दायर किया। मुझे उम्मीद है कि वे इस पर पुनर्विचार करेंगे।
यदि आप रुचि रखते हैं, तो आप यहां एक JEP ड्राफ्ट पा सकते हैं: https://gist.github.com/cardil/b29a81efd64a09585076fe00e3d34de7
वास्तव में एक शॉर्टकट बनाना संभव है, ताकि आप कुछ ऐसा करके अपने कोड में छोटे नामों का उपयोग कर सकें:
package com.mycompany.installer;
public abstract class ConfigurationReader {
private static class Implementation extends com.mycompany.installer.implementation.ConfigurationReader {}
public abstract String getLoaderVirtualClassPath();
public static QueryServiceConfigurationReader getInstance() {
return new Implementation();
}
}
इस तरह से आपको केवल एक बार लंबे नाम को निर्दिष्ट करने की आवश्यकता है, और आपके पास कई विशेष रूप से नामित कक्षाएं हो सकती हैं जो आप चाहते हैं।
इस पैटर्न के बारे में एक और बात मुझे अच्छी लगती है कि आप इसे लागू करने वाले वर्ग को सार आधार वर्ग के रूप में नाम दे सकते हैं, और बस इसे एक अलग नामस्थान में रख सकते हैं। यह हालांकि आयात / नाम बदलने के पैटर्न से संबंधित नहीं है।