জাভা জেনেরিকের 'এবং' এবং ',' এর মধ্যে পার্থক্য কী?


110

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

<T extends MyClass & Serializable>

আমি এর &সাথে প্রতিস্থাপন করেছি ,(ভুল করে এবং এখনও কাজ করে, একটি সামান্য সতর্কতা দিয়ে)।

আমার প্রশ্ন হ'ল এই দুটিয়ের মধ্যে কি কোনও পার্থক্য রয়েছে:

<T extends MyClass & Serializable>
<T extends MyClass , Serializable> // here is with comma

এবং উদাহরণ পদ্ধতি:

static <T extends MyClass & Serializable> ArrayList<T> fromArrayToCollection(T[] a) {
    ArrayList<T> arr = new ArrayList<T>();

    for (T o : a) {
        arr.add(o); // Correct
    }
    return arr;
}

5
@ ডুরকনব আপনি ধরে নিচ্ছেন যে ওপি আপনি যে কীবোর্ড এবং একই কীবোর্ডটি ব্যবহার করছেন তা ব্যবহার করছেন।
এমরি

3
@ ইমোরি আমি মনে করি এটি এমনকি দিকটি ভুল - ত্রুটিটি তার আঙ্গুলগুলিতে নয় তার মস্তিস্কে ছিল। একইভাবে আপনি জাভা উত্স ফাইলটিতে 'ইম্পোর্ট' এর পরিবর্তে 'অন্তর্ভুক্ত' ব্যবহার করার চেষ্টা করেছেন। আপনি ভুলভাবে 'অন্তর্ভুক্ত' লিখেছেন, কারণ আপনার মস্তিষ্ক আপনাকে ভুল জিনিসটি টাইপ করতে বলেছিল, যা বিভিন্ন কারণে সম্ভব।
নিক পিকেরিং

2
@ নিকোলাস পিকারিং, ঠিক আছে! আমার কাছে, এটি কীবোর্ডের কারণে ভুল নয়, মস্তিষ্কের কারণে হয়েছিল। আপনি যখন কোন শ্রেণীর প্রয়োগগুলি ইন্টারফেসগুলি লিখেন, আপনি সেগুলি কমা দ্বারা পৃথক করে।
অ্যালিন সিওকান

উত্তর:


169
<T extends MyClass & Serializable>

এটি দৃser়ভাবে দাবি করে যে একক প্রকারের প্যারামিটারটি Tঅবশ্যই প্রসারিত MyClassহতে হবে এবং হওয়া আবশ্যক Serializable

<T extends MyClass , Serializable>

এটি দুটি ধরণের পরামিতি ঘোষণা করে , একটি বলা হয় T(যা প্রসারিত হওয়া আবশ্যক MyClass) এবং একটি বলা হয় Serializable(যা লুকায় java.io.Serializable- এই সম্ভবত সতর্কবার্তাটি ছিল)

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