একটি পদ্ধতির জন্য জাভা পরিবর্তনশীল নম্বর বা যুক্তি


146

প্যারামিটারের একটি পরিবর্তনশীল সংখ্যার অনুমতি দেবে এমন কোনও পদ্ধতি ঘোষণা করা কি সম্ভব?

সংজ্ঞাটিতে ব্যবহৃত প্রতীকবাদটি কী বোঝায় যে পদ্ধতিটি একটি পরিবর্তনশীল সংখ্যক পরামিতিগুলির অনুমতি দেয়?

উত্তর: varargs


11
এর হোম ওয়ার্কের পরে, আমরা আপনার প্রশ্নটি জানতে চাই না, আমরা কেবল শিখছি তা জানতে চাই।
এইচডিভেন

উত্তর:


274

এটাই সঠিক. আপনি তার সম্পর্কে আরও জানতে পারেন ভারাক্রমে ওরেটল গাইডে

এখানে একটি উদাহরণ:

void foo(String... args) {
    for (String arg : args) {
        System.out.println(arg);
    }
}

যাকে বলা যেতে পারে

foo("foo"); // Single arg.
foo("foo", "bar"); // Multiple args.
foo("foo", "bar", "lol"); // Don't matter how many!
foo(new String[] { "foo", "bar" }); // Arrays are also accepted.
foo(); // And even no args.

1
বিভিন্ন ধরণের প্যারামেটারগুলি করা কি সম্ভব? উদাঃ (স্ট্রিং ... স্টারস, ইনট ... ইনস) কোনও ক্রমে কেবল কোনও ধরণের যুক্তি সম্পর্কে কী?
trusktr

5
@trusktr: আপনি যদি কোনও বিষয় চান তবে কেবল ব্যবহার করুন Object...
বালাসসি

2
@trusktr না, আদিম বস্তু নয়। পার্থক্যটির এখানে একটি দুর্দান্ত ব্যাখ্যা রয়েছে: প্রোগ্রামারমিনিটারভিউ
ডিক লুকাস

5
@ রিচার্ড: অটোবক্সিংয়েরObject... args কারণে ব্যবহার আদিমদের সাথে কাজ করবে ।
সুমিত

1
@ স্টিভেন ভ্যাসেলেলারো: আমি ধরে নিলাম যে আর্গুমেন্টগুলি অ্যারের মতো পরিচালনা করা হয়েছে, তাই আপনি সম্ভবত সহজভাবে করতে পারেনvarargs.length
এলএমডি

15
Variable number of arguments

কোনও পদ্ধতিতে পরিবর্তনশীল সংখ্যক আর্গুমেন্ট পাস করা সম্ভব। তবে কিছু বিধিনিষেধ রয়েছে:

  • প্যারামিটারের পরিবর্তনশীল সংখ্যাটি অবশ্যই একই ধরণের হতে হবে
  • এগুলি পদ্ধতির মধ্যে একটি অ্যারে হিসাবে বিবেচনা করা হয়
  • এগুলি অবশ্যই পদ্ধতির শেষ প্যারামিটার হতে হবে

এই বিধিনিষেধগুলি বোঝার জন্য, নিম্নলিখিত কোড স্নিপেটে, পদ্ধতিটি বিবেচনা করুন, পূর্ণসংখ্যার তালিকার বৃহত্তম সংখ্যাকে প্রত্যাবর্তনের জন্য ব্যবহৃত হয়েছিল:

private static int largest(int... numbers) {
     int currentLargest = numbers[0];
     for (int number : numbers) {
        if (number > currentLargest) {
            currentLargest = number;
        }
     }
     return currentLargest;
}

উত্স ওরাকল সার্টিফাইড সহযোগী জাভা এসই 7 প্রোগ্রামার স্টাডি গাইড 2012


14

হ্যাঁ এটা সম্ভব:

public void myMethod(int... numbers) { /* your code */ }

10

বিভিন্ন ধরণের আর্গুমেন্টের জন্য, এখানে 3-বিন্দু রয়েছে :

public void foo(Object... x) {
    String myVar1  = x.length > 0 ? (String)x[0]  : "Hello";
    int myVar2     = x.length > 1 ? Integer.parseInt((String) x[1]) : 888;
} 

তারপরে ফোন করুন

foo("Hii"); 
foo("Hii", 146); 

সুরক্ষার জন্য, এই জাতীয় ব্যবহার করুন:
if (!(x[0] instanceof String)) { throw new IllegalArgumentException("..."); }

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



0

হ্যাঁ জাভা vargsপদ্ধতি প্যারামিটারে অনুমতি দেয় ।

public class  Varargs
{
   public int add(int... numbers)
   { 
      int result = 1; 
      for(int number: numbers)
      {
         result= result+number;  
      }  return result; 
   }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.