"আমদানি" করার পরে "স্থিতিশীল" সংশোধকটির অর্থ কী?


438

যখন এটির মতো ব্যবহার করা হয়:

import static com.showboy.Myclass;

public class Anotherclass{}

import static com.showboy.Myclassএবং মধ্যে পার্থক্য কি import com.showboy.Myclass?

উত্তর:


390

ডকুমেন্টেশন দেখুন

স্থিতিশীল আমদানির ঘোষণাটি সাধারণ আমদানির ঘোষণার সাথে সাদৃশ্যপূর্ণ। সাধারণ আমদানির ঘোষণাপত্র প্যাকেজগুলি থেকে ক্লাস আমদানি করে, প্যাকেজ যোগ্যতা ছাড়াই তাদের ব্যবহারের অনুমতি দেয়, স্থিতিশীল আমদানি ঘোষণা ক্লাস থেকে স্থির সদস্যদের আমদানি করে, শ্রেণি যোগ্যতা ছাড়াই তাদের ব্যবহারের অনুমতি দেয়।

সুতরাং আপনি কখন স্থির আমদানি ব্যবহার করবেন? খুব কম! কেবলমাত্র তখনই এটি ব্যবহার করুন যখন আপনি অন্যথায় ধ্রুবকের স্থানীয় অনুলিপিগুলি ঘোষণা করতে বা উত্তরাধিকারের অপব্যবহার করতে (কনস্ট্যান্ট ইন্টারফেস অ্যান্টিপ্যাটার্টার) প্রলুব্ধ হন tern অন্য কথায়, যখন আপনার এক বা দুটি শ্রেণীর স্থির সদস্যদের ঘন ঘন অ্যাক্সেসের প্রয়োজন হয় তখন এটি ব্যবহার করুন। আপনি যদি স্ট্যাটিক আমদানি বৈশিষ্ট্যটি অতিরিক্ত ব্যবহার করেন তবে এটি আপনার প্রোগ্রামটি অপঠনযোগ্য এবং অভাবনীয় করে তুলতে পারে, এটি আপনার আমদানি করা সমস্ত স্থিতিশীল সদস্যের সাথে নামটির স্থানটিকে দূষিত করে। আপনার কোডের পাঠকরা (আপনি সহ, আপনি এটি লেখার কয়েক মাস পরে) স্ট্যাটিক সদস্যটি কোন শ্রেণী থেকে আসে তা জানতে পারবেন না। কোনও শ্রেণি থেকে স্থিতিশীল সদস্যদের সকলের আমদানি পাঠযোগ্যতার জন্য বিশেষ ক্ষতিকারক হতে পারে; আপনার যদি কেবল একজন বা দু'জন সদস্যের প্রয়োজন হয় তবে সেগুলি পৃথকভাবে আমদানি করুন। যথাযথভাবে ব্যবহৃত, স্থিতিশীল আমদানি আপনার প্রোগ্রামকে আরও পঠনযোগ্য করে তুলতে পারে,


28
আমি @ এসএসএল দ্বারা উপরের সাবধানবাণীগুলির সাথে সম্পূর্ণ সম্মত agree একটি অঞ্চল যেখানে এটি স্পষ্টতই খুব কার্যকর তা জুনিটের দৃ for় প্রতিবেদনের জন্য: আপনার সমস্ত ইউনিট পরীক্ষার জন্য স্ট্যাটিক org. junit.Assert। * আমদানি করুন
BxlSofty

3
- সহজ ব্যাখ্যা লেখার পরিবর্তে খুব দীর্ঘ এবং সত্যই আকর্ষণীয় ডকুমেন্টেশন ফাইলটি আটকে রাখার নিয়ন্ত্রণের জন্য।
Bżażej মিশালিক

@xsl পোস্টের নীচের অংশটি কোট ব্লকে থাকার কথা? দেখে মনে হচ্ছে আপনি এটি টাইপ করেছেন।
ফেরিবিগ

1
@ ফেরিবিগ: এটি লিঙ্কযুক্ত ডকুমেন্টেশনের একটি উদ্ধৃতি।
জোশুয়া স্নাইডার

এটি includeরুবির মতো !
ক্লো 23

227

আপনি যে দুটি আমদানি জানিয়েছেন সেটির মধ্যে কোনও পার্থক্য নেই। আপনি অন্য শ্রেণীর স্থিতিশীল সদস্যদের অযোগ্য অ্যাক্সেসের অনুমতি দিতে স্থিতিশীল আমদানিটি ব্যবহার করতে পারেন। যেখানে আমি এটি করতাম:

import org.apache.commons.lang.StringUtils;
      .
      .
      .
if (StringUtils.isBlank(aString)) {
      .
      .
      .

আমি এটা করতে পারবো:

import static org.apache.commons.lang.StringUtils.isBlank;
      .
      .
      .
if (isBlank(aString)) {
      .
      .
      .

আপনি ডকুমেন্টেশনে আরও দেখতে পারেন ।


57

স্ট্যাটিক আমদানি স্থির ক্ষেত্রগুলি / শ্রেণীর পদ্ধতি পরিবর্তে আমদানি করতে ব্যবহৃত হয়:

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 আমদানি করুন;" কাজ করবে না: আমদানি শ্রেণীর জন্য, আমদানি স্ট্যাটিক কোনও শ্রেণির স্থির সদস্যদের জন্য।


37

স্ট্যাটিক আমদানির মূল ধারণাটি হ'ল আপনি যখনই স্ট্যাটিক ক্লাস, স্ট্যাটিক ভেরিয়েবল বা এনুম ব্যবহার করছেন, আপনি সেগুলি আমদানি করতে পারেন এবং কিছু টাইপিং থেকে নিজেকে বাঁচাতে পারেন।

আমি উদাহরণ সহ আমার বক্তব্য বিস্তারিত করব।

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

দ্রষ্টব্য : স্থির আমদানি আপনার কোডটি পড়তে বিভ্রান্ত করতে পারে।


4
import static java.lang.Mathতারকাচিহ্ন ব্যতীত কিছু লেখার অর্থ কি ?
ক্রিস মিডলটন

1
অ্যামাডাসড্রজাইউস না, আমদানি স্ট্যাটিক কেবল একটি শ্রেণির স্থির সদস্যদের জন্য।
হ্যারি

1
ভাল উত্তর! যেহেতু অনেক 'নবজাতক' এই পোস্টটি পড়ছেন তাদের উচিত তবে একটি সামান্য সতর্কতা দেওয়া উচিত: নেমস্পেসের দূষণ রোধ করার জন্য নক্ষত্রটিকে অতিরিক্ত ব্যবহার করবেন না
goerlibe

24

"ইম্পোর্ট স্ট্যাটিক com.showboy.Myclass" এবং "ইম্পোর্ট com.showboy.Myclass" এর মধ্যে পার্থক্য?

প্রথমটি একটি সংকলক ত্রুটি তৈরি করা উচিত কারণ স্থির আমদানি কেবল ক্ষেত্র বা সদস্যের ধরণের আমদানি করে। (ধরে নেওয়া মাইক্লাস কোনও অভ্যন্তর শ্রেণি বা শোবয়ের সদস্য নয়)

আমি মনে করি আপনি বোঝাতে চেয়েছিলেন

import static com.showboy.MyClass.*;

যা মাইক্লাসের সমস্ত স্থিতিশীল ক্ষেত্র এবং সদস্যদের যোগ্যতা ছাড়াই প্রকৃত সংকলন ইউনিটে উপলব্ধ করে তোলে ... উপরে বর্ণিত হিসাবে


14

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 এ স্ট্যাটিক আমদানি কী


2

বলুন যে আপনার কাছে ক্লাসের MyClassভিতরে ডাকা ক্লাসের ভিতরে স্ট্যাটিক ক্ষেত্র এবং পদ্ধতি রয়েছে এবং এটি প্রতিটি myPackageটাইপ করে myStaticFieldবা টাইপ না করে সরাসরি আপনি অ্যাক্সেস করতে চান বা ।myStaticMethodMyClass.myStaticFieldMyClass.myStaticMethod

দ্রষ্টব্য: আপনি যদি একটি যা করতে হবে import myPackage.MyClass বা myPackage.* অন্যান্য সম্পদ ব্যবহার করার জন্য


1

staticপরিবর্তক পর importপুনরুদ্ধারের / একটি ক্লাসের স্ট্যাটিক ক্ষেত্র ব্যবহার জন্য। একটি ক্ষেত্র যা আমি ব্যবহার করি import staticতা ক্লাস থেকে ধ্রুবকগুলি পুনরুদ্ধার করার জন্য। আমরা import staticস্থির পদ্ধতিতেও আবেদন করতে পারি । টাইপ করতে ভুলবেন না import staticকারণ static importভুল।

static importজাভাতে কী রয়েছে - জাভাআরভিসিটেড - আরও জানার জন্য একটি খুব ভাল উত্সimport static

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.