سؤال

عندما تستخدم مثل هذا:

import static com.showboy.Myclass;

public class Anotherclass{}

ما الفرق بين import static com.showboy.Myclass و import com.showboy.Myclass?

هل كانت مفيدة؟

المحلول

الوثائق

<اقتباس فقرة>   

ووبيان الاستيراد ثابت هو   مماثلة لاستيراد العادي   إعلان. حيث استيراد العادي   وتستورد إعلان فئات من   حزم، والسماح لهم لاستخدامها   دون قيد أو شرط الحزمة،   ساكنة واردات بيان الاستيراد   أعضاء ثابتة من الطبقات، مما يسمح لل   لهم لاستخدامها من دون الطبقة   التأهيل.

     

وهكذا عندما يجب عليك استخدام استيراد ثابت؟   مقتصد جدا! استخدامها فقط عندما كنت   خلاف ذلك يميل لاعلان المحلية   نسخ من الثوابت، أو لسوء المعاملة   الميراث (واجهة ثابت   النموذج المضاد). وبعبارة أخرى، واستخدامها   عند تتطلب الوصول المتكرر لل   أعضاء ثابتة من واحد أو اثنين   الطبقات. إذا كنت تكثر من استعمال ثابت   ميزة الاستيراد، فإنه يمكن أن يصبح لديك   برنامج قابل للقراءة وغير قابل للدعم،   تلويث مساحة الاسم مع جميع   ساكنة أعضاء استيراد. قراء   التعليمات البرمجية (بما فيهم أنت، بعد أشهر قليلة   بعد أنك كتبت عليه) لن تعرف   الفئة التي تأتي عضو ثابت   من عند. استيراد كل من ثابت   ويمكن لأعضاء من فئة يكون   ضارة بشكل خاص للقراءة.   إذا كنت في حاجة واحدة فقط أو اثنين من الأعضاء،   استيراد منهم على حدة. مستخدم   على نحو ملائم، يمكن استيراد ثابت جعل   البرنامج أكثر قابلية للقراءة، من خلال   إزالة النمطي التكرار   من أسماء فئة.

نصائح أخرى

ولا فرق بين هذين الواردين اللذين ذكرتهما.ومع ذلك، يمكنك استخدام الاستيراد الثابت للسماح بالوصول غير المؤهل إلى الأعضاء الثابتين في الفئات الأخرى.حيث اعتدت أن أفعل هذا:

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;

}

ومن المفيد إذا غالبا ما كنت تستخدم ثابت من فئة أخرى في التعليمات البرمجية وإذا كان استيراد ثابت لا غموض فيه.

وراجع للشغل، في المثال الخاص بك "استيراد 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));
  }
}

ملاحظة : ل. استيراد ثابت يمكن أن تجعل التعليمات البرمجية مربكة لقراءة

<اقتباس فقرة>   

والفرق بين "استيراد com.showboy.Myclass ثابت" و "com.showboy.Myclass استيراد"؟

ووينبغي أن تولد خطأ مترجم منذ استيراد ثابت يعمل فقط لاستيراد الحقول أو أنواع عضوا أولا. (على افتراض MyClass ليست الطبقة الداخلية أو عضو من showboy)

وأعتقد أنك تعني

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");  

 }   
} 

أنظر أيضا : ما هو الاستيراد الثابت في Java 5

ويقول لديك حقول وأساليب ثابتة داخل فئة تسمى MyClass داخل حزمة تسمى myPackage وتريد الوصول إليها مباشرة عن طريق كتابة myStaticField أو myStaticMethod دون كتابة كل MyClass.myStaticField الوقت أو MyClass.myStaticMethod.

ملحوظة: ما عليك القيام به ل    import myPackage.MyClass أو myPackage.*     للوصول إلى الموارد الأخرى

وومعدل static بعد import هو لاسترجاع / باستخدام حقول ثابتة من فئة. ومن المجالات التي يمكنني استخدام import static هي لاسترجاع الثوابت من فئة. نحن يمكن أن ينطبق أيضا على import static أساليب ثابتة. تأكد من كتابة import static لstatic import هو الخطأ.

على <وأ href = "http://javarevisited.blogspot.com/2012/10/what-is-static-import-in-java-5-example-tutorial.html" يختلط = "نوفولو noreferrer "> ما هو static import في جافا - JavaRevisited - يمكنك. موردا جيدا للغاية لمعرفة المزيد عن import static

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top