এই পদ্ধতির স্বাক্ষরের জন্য উপবৃত্ত (…) কী কী?


203

ইন App ইঞ্জিন ডক্স , ঊহ্য শব্দ (কি JID...) এই পদ্ধতি স্বাক্ষরে জন্য?

public MessageBuilder withRecipientJids(JID... recipientJids)

এই তিনটি বিন্দুর কাজ কী?


7
যাইহোক, আমি হরিজন্টাল এললিপসিস অক্ষর , ইউনিকোড ইউ + 2026 চেষ্টা করেছিলাম । জাভা 8-তে নেটবিয়ানস 8 "অবৈধ চরিত্র" হিসাবে রিপোর্ট করেছে। সুতরাং জাভা ভারার্গসের জন্য ট্রিপল ফুল স্টপ (পিরিয়ড), প্রয়োজন ...
বাসিল বাউর্ক

উত্তর:


208

সেগুলি জাভা ভারার্গস gs তারা আপনাকে নির্দিষ্ট ধরণের যেকোন সংখ্যক অবজেক্টকে পাস করতে দেয় (এই ক্ষেত্রে তারা জেআইডি টাইপের হয়)।

আপনার উদাহরণে, নিম্নলিখিত ফাংশন কলগুলি বৈধ হবে:

MessageBuilder msgBuilder; //There should probably be a call to a constructor here ;)
MessageBuilder msgBuilder2;
msgBuilder.withRecipientJids(jid1, jid2);
msgBuilder2.withRecipientJids(jid1, jid2, jid78_a, someOtherJid);

এখানে আরও দেখুন: http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html


16
নোট করুন যে আর্গুমেন্টগুলি JID এর অ্যারে হিসাবেও পাস হতে পারে (এটি ভ্যারারগগুলি পশ্চাদপটে সামঞ্জস্যপূর্ণ করে তোলে)।
এমজেএন

54
এছাড়াও মনে রাখবেন যে 0 টি ভারার্গগুলি (কিছুই না) পাস করা বৈধ।
হক্কে পার্কার

9
সর্বশেষে তবে সর্বনিম্ন নয়, ভারার্গটি অবশ্যই পদ্ধতির শেষ প্যারামিটার হতে হবে। সুতরাং, আপনার একই পদ্ধতিতে দুটি ভারার্গ পরামিতি থাকতে পারে না। হয়তো, আপনি এই পদ্ধতি আকর্ষণীয় জানতে পারেন docs.oracle.com/javase/7/docs/api/java/util/...
BlackBrain

62

পদ্ধতির অভ্যন্তরে উপবৃত্তাকার বা ভারার্গ্স ব্যবহার করার উপায়টি যেন এটি একটি অ্যারে হয়:

public void PrintWithEllipsis(String...setOfStrings) {
    for (String s : setOfStrings)
        System.out.println(s);
}

এই পদ্ধতিটি নিম্নলিখিত হিসাবে বলা যেতে পারে:

obj.PrintWithEllipsis(); // prints nothing
obj.PrintWithEllipsis("first"); // prints "first"
obj.PrintWithEllipsis("first", "second"); // prints "first\nsecond"

ভিতরে PrintWithEllipsis, প্রকারটি setOfStringsস্ট্রিংয়ের একটি অ্যারে। সুতরাং আপনি কিছু কাজ সংকলক সংরক্ষণ এবং একটি অ্যারে পাস করতে পারে:

String[] argsVar = {"first", "second"};
obj.PrintWithEllipsis(argsVar);

জন্য ভারার্গস পদ্ধতি, একটা ক্রম প্যারামিটার একই ধরণের একটি অ্যারের হচ্ছে বলে গণ্য করা হয়। সুতরাং যদি দুটি স্বাক্ষর পৃথক হয় কেবল তার মধ্যে একটি একটি ক্রম ঘোষণা করে এবং অন্যটি অ্যারে ঘোষণা করে, যেমন এই উদাহরণে:

void process(String[] s){}
void process(String...s){}

তারপরে একটি সংকলন-সময় ত্রুটি ঘটে।

উত্স: জাভা প্রোগ্রামিং ভাষার স্পেসিফিকেশন, যেখানে প্রযুক্তিগত শব্দটি variable arity parameterসাধারণ শব্দটির চেয়ে বেশি varargs


22

তিনটি বিন্দু (...) স্বরলিপিটি আসলে গণিত থেকে ধার করা হয় এবং এর অর্থ "... এবং" ইত্যাদি।

জাভাতে এর ব্যবহারের জন্য এটির varargsঅর্থ দাঁড়ায় , এর অর্থ যে পদ্ধতি কলটিতে যে কোনও সংখ্যক যুক্তি যুক্ত করা যায়। একমাত্র সীমাবদ্ধতা হ'ল varargsঅবশ্যই পদ্ধতির স্বাক্ষরের শেষে থাকতে হবে এবং প্রতি পদ্ধতিতে কেবল একটি থাকতে পারে।


5

এগুলি হ'ল varargsএগুলি এমন একটি পদ্ধতি তৈরিতে ব্যবহৃত হয় যা কোনও সংখ্যক আর্গুমেন্ট গ্রহণ করে।

উদাহরণস্বরূপ মুদ্রণযন্ত্র.প্রিন্টফ পদ্ধতিটি এটি ব্যবহার করে, যেহেতু আপনি জানেন না আপনি যুক্তি ব্যবহার করবেন।

এগুলি কেবল যুক্তিগুলির চূড়ান্ত অবস্থান হিসাবে ব্যবহার করা যেতে পারে।

varargsজাভা 1.5 যোগ করা হয়েছে


3

এর অর্থ হল যে পদ্ধতিটি একটি পরিবর্তনশীল সংখ্যক আর্গুমেন্ট ("ভারাগস") টাইপ গ্রহণ করে JID। পদ্ধতির মধ্যে, recipientJidsউপস্থাপন করা হয়।

এটি এমন ক্ষেত্রে কার্যকর যেখানে আপনার এমন একটি পদ্ধতি রয়েছে যা প্রাকৃতিক উপায়ে একাধিক যুক্তি হ'ল পরিচালনা করতে পারে এবং আপনাকে কলগুলি লেখার অনুমতি দেয় যা তৈরির কদর্যতা ছাড়াই একই পদ্ধতিতে এক, দুই বা তিনটি পরামিতি পাস করতে পারে write উড়ে একটি অ্যারে।

এটি sprintfসি থেকে আসা আইডিয়ামগুলিকেও সক্ষম করে ; দেখতে String.format()যেমন,।

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