ماذا يعني المعدل "الثابت" بعد "الاستيراد"؟
-
03-07-2019 - |
سؤال
عندما تستخدم مثل هذا:
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