जवाबों:
प्रलेखन देखें
स्थैतिक आयात घोषणा सामान्य आयात घोषणा के अनुरूप है। जहां सामान्य आयात घोषणा संकुल से कक्षाओं का आयात करती है, उन्हें पैकेज योग्यता के बिना उपयोग करने की अनुमति देती है, स्थैतिक आयात घोषणा कक्षाओं से स्थिर सदस्यों को आयात करती है, जिससे उन्हें कक्षा योग्यता के बिना उपयोग करने की अनुमति मिलती है।
तो आपको स्थैतिक आयात का उपयोग कब करना चाहिए? बहुत विरल! केवल तब ही इसका उपयोग करें जब आपको अन्यथा स्थिरांक की स्थानीय प्रतियाँ घोषित करने, या वंशानुक्रम (कॉन्स्टेंट इंटरफ़ेस एंटीट्रोनफ़ॉर्म) का दुरुपयोग करने के लिए लुभाया जाएगा। दूसरे शब्दों में, इसका उपयोग तब करें जब आपको एक या दो वर्गों के स्थिर सदस्यों तक लगातार पहुंच की आवश्यकता हो। यदि आप स्थैतिक आयात सुविधा का उपयोग करते हैं, तो यह आपके प्रोग्राम को अपठनीय और असंदिग्ध बना सकता है, आपके द्वारा आयात किए जाने वाले सभी स्थैतिक सदस्यों के साथ इसके नामस्थान को प्रदूषित करता है। आपके कोड के पाठक (आपके सहित, आपके लिखे जाने के कुछ महीने बाद) को यह पता नहीं होगा कि एक स्थिर सदस्य किस वर्ग से आता है। सभी स्थिर सदस्यों को एक वर्ग से आयात करना विशेष रूप से पठनीयता के लिए हानिकारक हो सकता है; यदि आपको केवल एक या दो सदस्यों की आवश्यकता है, तो उन्हें व्यक्तिगत रूप से आयात करें। उचित रूप से प्रयुक्त, स्थैतिक आयात आपके कार्यक्रम को अधिक पठनीय बना सकता है,
उन दो आयातों के बीच कोई अंतर नहीं है जो आप राज्य करते हैं। हालाँकि, आप अन्य वर्गों के स्थिर सदस्यों तक अयोग्य पहुंच की अनुमति देने के लिए स्थैतिक आयात का उपयोग कर सकते हैं। जहाँ मुझे यह करना पड़ता था:
import org.apache.commons.lang.StringUtils;
.
.
.
if (StringUtils.isBlank(aString)) {
.
.
.
मे यह कर सकती हु:
import static org.apache.commons.lang.StringUtils.isBlank;
.
.
.
if (isBlank(aString)) {
.
.
.
आप दस्तावेज़ में अधिक देख सकते हैं ।
स्थैतिक आयात का उपयोग इसके स्थान पर स्थिर फ़ील्ड / विधि का आयात करने के लिए किया जाता है:
package test;
import org.example.Foo;
class A {
B b = Foo.B_INSTANCE;
}
तुम लिख सकते हो :
package test;
import static org.example.Foo.B_INSTANCE;
class A {
B b = B_INSTANCE;
}
यह उपयोगी है यदि आप अक्सर अपने कोड में किसी अन्य वर्ग से एक स्थिरांक का उपयोग किया जाता है और यदि स्थैतिक आयात अस्पष्ट नहीं है।
Btw, आपके उदाहरण में "स्थैतिक org.example.Myclass आयात करें;" काम नहीं करेगा: आयात वर्ग के लिए है, आयात स्थिर वर्ग के स्थिर सदस्यों के लिए है।
स्टैटिक इम्पोर्ट का मूल विचार यह है कि जब भी आप स्टैटिक क्लास, स्टेटिक वैरिएबल या एनम का उपयोग कर रहे हैं, तो आप उन्हें इम्पोर्ट कर सकते हैं और कुछ टाइपिंग से खुद को बचा सकते हैं।
मैं उदाहरण के साथ अपनी बात को विस्तृत करूंगा।
import java.lang.Math;
class WithoutStaticImports {
public static void main(String [] args) {
System.out.println("round " + Math.round(1032.897));
System.out.println("min " + Math.min(60,102));
}
}
स्थिर आयात के साथ समान कोड:
import static java.lang.System.out;
import static java.lang.Math.*;
class WithStaticImports {
public static void main(String [] args) {
out.println("round " + round(1032.897));
out.println("min " + min(60,102));
}
}
नोट : स्थिर आयात आपके कोड को पढ़ने के लिए भ्रमित कर सकता है।
import static java.lang.Mathबिना तार के लिखना होगा ?
"स्टैटिक कॉम.शोबॉय.माइकलेस" और "इम्पोर्ट कॉम.शोबॉय.माइकलेस" के बीच का अंतर?
पहला संकलक त्रुटि उत्पन्न करना चाहिए क्योंकि स्थैतिक आयात केवल फ़ील्ड या सदस्य प्रकारों के आयात के लिए काम करता है। (यह मानते हुए कि MyClass एक आंतरिक वर्ग या शोबॉय से सदस्य नहीं है)
मुझे लगता है कि आपका मतलब था
import static com.showboy.MyClass.*;
जो सभी स्थिर क्षेत्रों और MyClass के सदस्यों को योग्य बनाने के लिए वास्तविक संकलन इकाई में उपलब्ध कराता है ... जैसा कि ऊपर बताया गया है
importजावा प्रोग्रामर को पैकेज की योग्यता के बिना पैकेज की कक्षाओं तक पहुंचने की अनुमति देता है।
static importसुविधा वर्ग योग्यता के बिना एक वर्ग के स्थिर सदस्यों का उपयोग करने की अनुमति देता है।
importवर्गों तक पहुँच प्रदान करता है और इंटरफेस जबकि static importवर्ग के स्थिर सदस्यों तक पहुँच प्रदान करता है।
उदाहरण :
आयात के साथ
import java.lang.System.*;
class StaticImportExample{
public static void main(String args[]){
System.out.println("Hello");
System.out.println("Java");
}
}
स्थिर आयात के साथ
import static java.lang.System.*;
class StaticImportExample{
public static void main(String args[]){
out.println("Hello");//Now no need of System.out
out.println("Java");
}
}
इसे भी देखें: जावा 5 में स्टैटिक इम्पोर्ट क्या है
कहते हैं कि तुम एक वर्ग कहा जाता है के अंदर स्थिर क्षेत्रों और तरीकों MyClassएक पैकेज बुलाया अंदर myPackageऔर आप उन्हें टाइपिंग द्वारा सीधे उपयोग करना चाहते myStaticFieldया myStaticMethodहर बार लिखे बिना MyClass.myStaticFieldया MyClass.myStaticMethod।
नोट: आपको
अन्य संसाधनों तक पहुँचने के लिए import myPackage.MyClass या करने की आवश्यकता है
myPackage.*
इसके staticबाद importका संशोधक किसी वर्ग के स्थिर क्षेत्रों को प्राप्त करने / उपयोग करने के लिए है। एक क्षेत्र जिसमें मैं उपयोग करता हूं import staticवह एक वर्ग से स्थिरांक प्राप्त करने के लिए है। हम import staticस्थैतिक तरीकों पर भी आवेदन कर सकते हैं । टाइप करना सुनिश्चित करें import staticक्योंकि static importगलत है।
static importजावा में क्या है - JavaRevisited - इसके बारे में अधिक जानने के लिए एक बहुत अच्छा संसाधनimport static।