কেন একটি স্থির নেস্টেড ইন্টারফেস জাভা ব্যবহার করা হবে?


235

আমি সবেমাত্র আমাদের কোড-বেসে একটি স্ট্যাটিক নেস্টেড ইন্টারফেস পেয়েছি।

class Foo {
    public static interface Bar {
        /* snip */
    }
    /* snip */
}

আমি এর আগে কখনও দেখিনি। মূল বিকাশকারী নাগালের বাইরে। অতএব আমাকে এসওকে জিজ্ঞাসা করতে হবে:

স্ট্যাটিক ইন্টারফেসের পিছনে শব্দার্থকগুলি কী কী? কী বদলে যাবে, আমি যদি সরিয়ে দিই static? কেন কেউ এই কাজ করবে?


2
এটি কোনও 'অভ্যন্তরীণ ইন্টারফেস নয়: এটি নেস্টেড ইন্টারফেস। জাভাতে ইনারটির একটি নির্দিষ্ট অর্থ রয়েছে।
লার্নের মারকুইস

উত্তর:


293

উপরের উদাহরণের স্ট্যাটিক কীওয়ার্ডটি রিন্ডান্ট্যান্ট (একটি নেস্টেড ইন্টারফেস স্বয়ংক্রিয়ভাবে "স্ট্যাটিক") এবং শব্দার্থবিজ্ঞানের কোনও প্রভাব ছাড়াই সরানো যেতে পারে; আমি এটি সরানোর পরামর্শ দিই। একই ইন্টারফেস পদ্ধতিতে "পাবলিক" এবং ইন্টারফেস ক্ষেত্রগুলিতে "সর্বজনীন চূড়ান্ত" - পরিবর্তকগুলি অপ্রয়োজনীয় এবং কেবল উত্স কোডে বিশৃঙ্খলা যুক্ত করে।

যে কোনও উপায়ে, বিকাশকারী কেবল ফু.বার নামে একটি ইন্টারফেস ঘোষণা করছেন is এনকোলেজিং ক্লাসের সাথে আর কোনও সংযুক্তি নেই, কেবল কোডগুলি যা ফুগুলিতে অ্যাক্সেস করতে পারে না সেগুলি ছাড়াও Foo.Bar অ্যাক্সেস করতে পারবে না। (উত্স কোড থেকে - বাইকোড বা প্রতিবিম্ব Foo.Bar অ্যাক্সেস করতে পারে এমনকি Foo প্যাকেজ-ব্যক্তিগত হয়!)

আপনি যদি কেবল বাইরের শ্রেণি থেকে এটি ব্যবহার করার প্রত্যাশা করেন তবে আপনি কোনও নতুন শীর্ষ-স্তরের নাম তৈরি না করে এমনভাবে নেস্টেড ইন্টারফেস তৈরি করা গ্রহণযোগ্য স্টাইল। উদাহরণ স্বরূপ:

public class Foo {
    public interface Bar {
        void callback();
    }
    public static void registerCallback(Bar bar) {...}
}
// ...elsewhere...
Foo.registerCallback(new Foo.Bar() {
    public void callback() {...}
});

1
জেসি গ্লিকের উত্তরে এর অর্থ কী: (উত্স কোড থেকে - বাইটকোড বা প্রতিবিম্ব যদি ফু প্যাকেজ-প্রাইভেট হয়ে থাকে তবেও Foo.Bar অ্যাক্সেস করতে পারে!)।
ভাসু

কাইল্ল্যাশ, ব্যক্তিগত পদ্ধতিগুলি রিলফেকশনের মাধ্যমে (প্রতিবিম্বিত প্যাকেজে) এবং উত্পাদিত .ক্লাস ফাইলগুলির বাইকোডে সরাসরি অ্যাক্সেসের মাধ্যমে অ্যাক্সেস করা যায়।
gmoore

2
"বাইটকোড ... Foo.Bar অ্যাক্সেস করতে পারে" দ্বারা আমি বোঝাচ্ছি যে একটি কম্পাইল করা ক্লাস রেফারেন্সিং Foo.Bar লো ফুটিয়ে উঠতে পারে এবং এটি ফু এর উল্লেখ না করতে পারলেও চালানো যেতে পারে। এটি ঘটতে পারে যদি ফু প্রকাশ্যে প্রকাশিত হওয়ার আগে ক্লাসটি পূর্ববর্তী সময়ে সংকলন করা হত, বা ক্লাসটি হ্যান্ড-অ্যাসেম্বল করা হত বা জাভা-সংক্রান্ত কিছু ভাষা থেকে সংকলন করা হত ইত্যাদি। জাভা সংকলক অবশ্য, বদ্ধ শ্রেণিতে অ্যাক্সেস মডিফায়ার পরীক্ষা করে এমনকি যখন ফলাফলের বাইটকোড সেই বেষ্টনকারী শ্রেণিকে উল্লেখ না করে।
জেসি গ্লিক

@ জেসি কোনও প্রাইভেট শীর্ষ-স্তরের শ্রেণীর কোনও প্রাইভেট স্ট্যাটিক ক্লাস প্রতিবিম্বের মাধ্যমে অ্যাক্সেস করা যেতে পারে?
পেসারিয়ার

1
@ পেসার: না আরও সুনির্দিষ্টভাবে, আপনি ক্লাসটি লোড করতে এবং এর সদস্যদের পরীক্ষা করতে পারবেন, তবে সেট ইনস্ট্যান্সেসিবল (সত্য) ব্যবহার না করে এটিকে ইনস্ট্যান্ট করতে বা পদ্ধতিতে কল করতে পারবেন না। অন্য কথায় এটি প্রতিবিম্বের মাধ্যমে দৃশ্যমান, তবে অ্যাক্সেসযোগ্য নয়। তবে যদি নেস্টেড স্ট্যাটিক ক্লাসটি সর্বজনীন হয় তবে এটি প্রতিবিম্বের মাধ্যমে ডিফল্টরূপে অ্যাক্সেসযোগ্য যদিও এটি স্থিতিশীলভাবে অ্যাক্সেসযোগ্য নয় (সংকলনের সময়)।
জেসি গ্লিক

72

প্রশ্নের উত্তর দেওয়া হয়েছে, তবে নেস্টেড ইন্টারফেস ব্যবহারের একটি ভাল কারণ যদি এটির ফাংশনটি সরাসরি শ্রেণীর সাথে সম্পর্কিত হয় তবে এর একটি ভাল উদাহরণ হ'ল একটি Listener। যদি আপনার একটি ক্লাস থাকে Fooএবং আপনি চাইছিলেন যে অন্যান্য ক্লাসগুলি এতে ইভেন্টগুলি শোনার জন্য সক্ষম হবেন, আপনি একটি ইন্টারফেসের নাম ঘোষণা করতে পারেন FooListener, যা ঠিক আছে তবে নেস্টেড ইন্টারফেস ঘোষণা করা এবং আরও অন্যান্য ক্লাসগুলি প্রয়োগ করা সম্ভবত এটি আরও স্পষ্ট হবে Foo.Listener( একটি নেস্টেড ক্লাসটি এর Foo.Eventসাথে খারাপ নয়)।


11
একটি সাধারণ উদাহরণ হ'ল java.util.Map.Entry(যা অন্য ইন্টারফেসে নেস্টেড একটি ইন্টারফেস)।
পাওলো ইবারম্যান

4
আমি জানি এটি একটি পুরানো বিষয়, তবে আমি বহিরাগত শ্রেণিটিকে তার নিজস্ব প্যাকেজে এবং কোনও পরিপূরক ইন্টারফেস (যেমন Map.Entry) বা ক্লাসগুলিও সেই প্যাকেজের মধ্যে থাকতে পছন্দ করব। আমি এটি বলছি কারণ আমি আমার ক্লাসগুলি সংক্ষিপ্ত এবং বিন্দুতে রাখতে পছন্দ করি। এছাড়াও পাঠক প্যাকেজের ক্লাসগুলি দেখে ক্লাসের সাথে কী কী অন্যান্য সত্তা সম্পর্কিত তা দেখতে পাবে। আমি সম্ভবত java.collections.mapমানচিত্রের জন্য একটি প্যাকেজ আছে । এটি ওও এবং মডুলারিটি সম্পর্কে। java.utilএটা খুব বেশি আছে। utilএর মতো common- গন্ধযুক্ত আইএমও
ডেভিড কের

1
@ শেগি: java.utilঅবশ্যই এতে খুব বেশি আছে। এটি বলেছিল, আমি মনে করি না যে এটিকে সূক্ষ্ম দানাযুক্ত প্যাকেজগুলিতে ভাগ করে দেওয়া আপনি যেভাবে পরামর্শ দিচ্ছেন তা হয় আদর্শ।
কলিন্ড

1
@ ডেভিডকের ধরুন আপনি এই ইন্টারফেসটিকে java.util.MapEntryতার নিজস্ব প্যাকেজের বাইরে কল করেছেন । প্রথম প্রতিচ্ছবি: এই শ্রেণীর সাথে সম্পর্কিত ইন্টারফেস কী? আমি ক্লাসে তাকান। জাভাডোক এই ইন্টারফেসের সাথে লিঙ্ক না করলে আমার তাদের সম্পর্কের কোনও চিহ্ন নেই। প্লাস লোকেরা আমদানি প্যাকেজটির দিকে তাকাবে না। সবার নিজস্ব মতামত আছে। কেউ ঠিক নেই, কেউই ভুল নয়
রেমন্ড চেনন

@ রেমন্ডচেনন আমি যা বলেছিলাম তার অংশটি হ'ল মানচিত্র এবং এর সাথে সম্পর্কিত ক্লাসগুলি স্থাপন করা, যেমন ম্যাপ।এন্ট্রি একটি পৃথক প্যাকেজ হিসাবে স্থাপন করুন, উদাহরণস্বরূপ java.collections.map। এইভাবে মানচিত্রে সম্পর্কিত সমস্ত কোড একক স্থানে (প্যাকেজ) এবং শীর্ষ স্তরের মানচিত্র শ্রেণি বোঝা হয় না। আমি সম্ভবত একই প্যাকেজে সম্পর্কিত বাস্তবায়নগুলি (হ্যাশম্যাপ ইত্যাদি) রাখতাম।
ডেভিড কের

14

সদস্য ইন্টারফেস সুস্পষ্টভাবে স্থির হয়। আপনার উদাহরণের স্ট্যাটিক সংশোধক কোডটির শব্দার্থবিজ্ঞান পরিবর্তন না করেই সরানো যেতে পারে। জাভা ভাষা নির্দিষ্টকরণ 8.5.1 দেখুন। স্থির সদস্যের প্রকারের ঘোষণা


এটি কোনও 'ইন্টারনাল ইন্টারফেস' নয়: এটি নেস্টেড ইন্টারফেস। জাভাতে ইনারটির একটি নির্দিষ্ট অর্থ রয়েছে।
লার্নের মারকুইস

@ ইজেপি, আমি বিভিন্ন ব্লগগুলি বিনিময়যোগ্য পদগুলি ব্যবহার করে পড়ি। অভ্যন্তরীণ ইন্টারফেস কি বিদ্যমান? কীভাবে তারা নেস্টেড ইন্টারফেস থেকে আলাদা?
945

@ ব্রেকিংবেঞ্জামিন, নেস্টেড ইন্টারফেসের অর্থ অচল। এখানে অভ্যন্তর শ্রেণি এবং নেস্টেড বর্গ রয়েছে, তবে অভ্যন্তরীণ ইন্টারফেস নেই। এমনকি যদি তা হয় তবে এটিকে নেস্টেড ইন্টারফেস হিসাবে ডাকা উচিত। অভ্যন্তরীণ - অ স্থিত এবং নেস্টেড অচল is
সুন্দর রাজন

9

অভ্যন্তরীণ ইন্টারফেস অ্যাক্সেস করার জন্য অচল থাকতে হবে। ইন্টারফেসটি ক্লাসের উদাহরণগুলির সাথে সম্পর্কিত নয়, তবে ক্লাসের সাথেই রয়েছে, সুতরাং এটির Foo.Barমতো এটিরও অ্যাক্সেস হবে :

public class Baz implements Foo.Bar {
   ...
}

বেশিরভাগ উপায়ে, এটি স্থির অভ্যন্তর শ্রেণীর চেয়ে আলাদা নয়।


35
একটি নেস্টেড ইন্টারফেস স্বয়ংক্রিয়ভাবে স্থিতিশীল, কেউ কীওয়ার্ডটি লেখেন কিনা not
পাওলো ইবারম্যান

3
আমরা সত্যিই একটি ভিন্ন উত্তর গ্রহণ করতে ভোট দিতে সম্প্রদায়ের জন্য একটি উপায় প্রয়োজন stackoverflow.com/a/74400/632951
Pacerier


@ ক্লিটনএন। ড্রেইসবাচ আপনি The interface isn't associated with instances of the class, but with the class itselfআরও কী বোঝাতে চেয়েছেন তা কি ব্যাখ্যা করতে পারেন , আমি তা পাইনি
কাসুন সিয়ামম্বলপিতিয়া

6

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

class ConcreteA implements A {
 :
}

class ConcreteB implements B {
 :
}

class ConcreteC implements C {
 :
}

class Zoo implements A, C {
 :
}

class DoSomethingAlready {
  interface AC extends A, C { }

  private final AC ac;

  DoSomethingAlready(AC ac) {
    this.ac = ac;
  }
}

2
এটা অপদার্থ. বর্গ ইন্টারফেস বাস্তবায়ন Zooকরে নাAC , অতএব, উদাহরণস্বরূপ Zooযে কনস্ট্রাক্টরের DoSomethingAlreadyপ্রত্যাশা রয়েছে তার উদাহরণগুলি দেওয়া যায় না AC। সত্য যে ACউভয় প্রসারিত, Aএবং C, ইঙ্গিত দেয় না যে ক্লাসগুলি বাস্তবায়ন করে Aএবং Cযাদুকরিভাবে প্রয়োগও করে AC
হোলার

3

আপনার প্রশ্নের সরাসরি উত্তর দিতে, মানচিত্রের দিকে তাকান nt

Map.Entry

এছাড়াও এটি দরকারী হতে পারে

স্ট্যাটিক নেস্টেড ইনফেরফেসগুলি ব্লগ এন্ট্রি


4
এটি উদাহরণ, তবে সত্যই উত্তর নয়।
পাওলো ইবারম্যান

আমি "জুড়ি" অবজেক্টগুলি তৈরি করতে মানচিত্র.এন্ট্রি ব্যবহার করি। এটি উন্মোচিত। পেয়ার বাস্তবায়নে দুটি চিন্তাভাবনা বিদ্যালয় রয়েছে, তবে এখানে বিষয়টি মূল বিষয় নয়। মানচিত্র.এন্ট্রি অভ্যন্তরীণ হতে পারে তবে আমি এটি বাইরে ব্যবহার করি।
রবীন্দ্রনাথ আকিলা

0

সাধারণত আমি স্থির অভ্যন্তরীণ ক্লাসগুলি দেখি। স্থির অভ্যন্তরীণ শ্রেণিগুলি যেখানে অ স্থিত ক্লাসগুলি পারে সেগুলি সহ ক্লাসগুলিকে উল্লেখ করতে পারে না। আপনি যদি কিছু প্যাকেজ সংঘর্ষে না ছুটে থাকেন (ফু এর মতো একই প্যাকেজে ইতিমধ্যে বার নামে একটি ইন্টারফেস রয়েছে) আমি মনে করি এটি এটিকে নিজস্ব ফাইল করব। এটি ফু এবং বারের মধ্যে লজিকাল সংযোগ কার্যকর করার একটি নকশার সিদ্ধান্তও হতে পারে। সম্ভবত লেখক বারটিকে কেবল ফু-র সাথে ব্যবহার করার ইচ্ছা করেছিলেন (যদিও স্থির অভ্যন্তরীণ ইন্টারফেসটি এটি প্রয়োগ করবে না, কেবল একটি যৌক্তিক সংযোগ)


'স্ট্যাটিক ইনার' শর্তে একটি বৈপরীত্য। নেস্টেড ক্লাসগুলি হয় স্থির বা অভ্যন্তরীণ।
লার্নের মারকুইস 11'15

0

আপনি যদি শ্রেণি ফুটিকে ইন্টারফেসে পরিবর্তন করেন তবে উপরোক্ত উদাহরণের "পাবলিক" কীওয়ার্ডটিও অপ্রয়োজনীয় হবে কারণ

অন্য ইন্টারফেসের ভিতরে সংজ্ঞায়িত ইন্টারফেস সুস্পষ্টভাবে পাবলিক স্ট্যাটিক করবে।


প্রশ্নের উত্তর
বৃষ্টি হচ্ছে

0

১৯৯৯ সালে, ফিলিপ ওয়াডলার স্ট্যাটিক ইন্টারফেস এবং নন-স্ট্যাটিক ইন্টারফেসের মধ্যে পার্থক্যের পরামর্শ দিয়েছিলেন।

আমি যতদূর দেখতে পাচ্ছি, ইন্টারফেসকে অ স্থিতিশীল করার ক্ষেত্রে একমাত্র পার্থক্য হ'ল এটিতে এখন অ স্থিতিশীল অভ্যন্তর শ্রেণি অন্তর্ভুক্ত থাকতে পারে; সুতরাং পরিবর্তনটি কোনও বিদ্যমান জাভা প্রোগ্রামকে অবৈধ সরবরাহ করবে না।

উদাহরণস্বরূপ, তিনি এক্সপ্রেশন সমস্যার সমাধানের প্রস্তাব করেছিলেন , যা অন্যদিকে "আপনার ভাষায় আপনি যে শব্দগুলি উপস্থাপন করার চেষ্টা করছেন" সেই শব্দ হিসাবে একদিকে যেমন "আপনার ভাষা কতটা প্রকাশ করতে পারে" এবং অভিব্যক্তির মধ্যে মিল নেই " ।

স্থির এবং অ স্থিত নেস্টেড ইন্টারফেসের মধ্যে পার্থক্যের একটি উদাহরণ তার নমুনা কোডে দেখা যায় :

// This code does NOT compile
class LangF<This extends LangF<This>> {
    interface Visitor<R> {
        public R forNum(int n);
    }

    interface Exp {
        // since Exp is non-static, it can refer to the type bound to This
        public <R> R visit(This.Visitor<R> v);
    }
}

তাঁর পরামর্শ এটি জাভা 1.5.0.0 এ কখনই তৈরি করতে পারেনি। অতএব, অন্যান্য সমস্ত উত্তর সঠিক: স্থির এবং অ-স্থির নেস্টেড ইন্টারফেসের সাথে কোনও পার্থক্য নেই।


এটি লক্ষ করা উচিত যে এগুলি সমস্ত জিজে বোঝায় যা জাভাতে জেনেরিকের জন্য খুব প্রারম্ভিক প্রসেসর ছিল।
মারকুইস অফ লরেন

-1

জাভাতে, স্ট্যাটিক ইন্টারফেস / শ্রেণি ইন্টারফেস / শ্রেণিকে একটি উচ্চ-স্তরের শ্রেণির মতো ব্যবহারের অনুমতি দেয়, এটি অন্যান্য শ্রেণি দ্বারা ঘোষিত হতে পারে। সুতরাং, আপনি এটি করতে পারেন:

class Bob
{
  void FuncA ()
  {
    Foo.Bar foobar;
  }
}

স্থির না হলে উপরেরগুলি সংকলন করতে ব্যর্থ হবে। এর সুবিধাটি হ'ল কেবল ইন্টারফেসটি ঘোষণার জন্য আপনার কোনও নতুন উত্স ফাইলের দরকার নেই। এটি ইন্টারফেস বারটিকে ক্লাস ফু-র সাথে দৃশ্যতভাবে সংযুক্ত করে যেহেতু আপনাকে Foo.Bar লিখতে হবে এবং বোঝা যাচ্ছে যে ফু ক্লাস Foo.Bar এর উদাহরণ দিয়ে কিছু করে।

জাভাতে শ্রেণীর ধরণের বর্ণনা


স্ট্যাটিক ছাড়া করে সঙ্কলন। 'স্ট্যাটিক' অপ্রয়োজনীয়।
লার্নের মারকুইস

@ এজেপি: আমি যে নিবন্ধটির সাথে লিঙ্ক করেছি তার মতে, স্থির ছাড়া অভ্যন্তরীণ শ্রেণি কেবলমাত্র নিজস্ব শ্রেণীরাই ব্যবহার করতে পারে না owingণী শ্রেণীর বাইরের কিছু দ্বারা। স্থিতিশীল এটিকে নেস্টেড শীর্ষ স্তরের শ্রেণিতে পরিণত করে এবং নিজস্ব শ্রেণীর (কমপক্ষে নিবন্ধ অনুযায়ী) ক্ষেত্রের বাহিরে অবজেক্টগুলি ব্যবহার করতে পারে। স্ট্যাটিক সম্পূর্ণরূপে অপ্রয়োজনীয় নয় এবং এটি অভ্যন্তরীণ শ্রেণির ক্ষেত্রকে প্রভাবিত করে। এটি ক্লাসগুলিতে প্রযোজ্য, ইন্টারফেসগুলি সর্বদা শীর্ষ স্তরের বস্তুর মতো কাজ করতে পারে (চেক করার জন্য ভাষাটি পড়তে হবে)। সম্ভবত আমার উত্তর (আমার খারাপ) এর ইন্টারফেস এবং শ্রেণীর অংশগুলি আলাদা করা উচিত ছিল।
স্কিজ

-6

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

"স্ট্যাটিক" পদ্ধতির ইউজফুলনগুলির নিখুঁত উদাহরণ ম্যাথ ক্লাস। ম্যাথের সমস্ত পদ্ধতি অচল। এর অর্থ আপনাকে নিজের পথ থেকে দূরে যেতে হবে না, একটি নতুন উদাহরণ তৈরি করতে হবে, ভেরিয়েবলগুলি ঘোষণা করতে হবে এবং এগুলি আরও ভেরিয়েবলে সংরক্ষণ করতে হবে, আপনি কেবল আপনার ডেটা প্রবেশ করতে পারেন এবং ফলাফল পেতে পারেন।

স্ট্যাটিক সবসময় যে দরকারী না। উদাহরণস্বরূপ আপনি যদি কেস-তুলনা করছেন তবে আপনি বিভিন্ন উপায়ে ডেটা সঞ্চয় করতে চাইতে পারেন। আপনি অভিন্ন স্বাক্ষর সহ তিনটি স্থিতিশীল পদ্ধতি তৈরি করতে পারবেন না। আপনার 3 টি পৃথক দৃষ্টান্ত প্রয়োজন, অ স্থিতিশীল, এবং তারপরে আপনি স্থির করতে পারেন এবং তুলনা করতে পারেন, যদি ইনপুট সহ ডেটা পরিবর্তন হয় না।

স্থিতিশীল পদ্ধতিগুলি এক-সময় রিটার্ন এবং দ্রুত গণনা বা সহজে প্রাপ্ত ডেটার জন্য ভাল।


1
স্থিতির অর্থ আমি জানি। আমি এর আগে কোনও ইন্টারফেসে এটি কখনও দেখিনি। সুতরাং আপনার প্রশ্নটি অফ-বিষয় - দুঃখিত
মো।

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