номер переменной java или аргументы для метода

<p>можно ли объявить метод, который позволит переменное количество параметров?</p><p>какой символизм используется в определении, указывающем, что метод должен разрешать переменное число параметров?</p><p><strong> ответ: </strong>varargs</p>

<p>правильно. вы можете найти больше об этом в <a href="http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html">руководство oracle по varargs</a> .</p><p>вот пример:</p><pre><code>void foo(string... args) { for (string arg : args) { system.out.println(arg); } } </code></pre><p>который можно назвать</p><pre><code>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. </code></pre>

<pre><code>variable number of arguments </code></pre><p>в метод можно передать переменное количество аргументов. тем не менее, есть есть некоторые ограничения:</p><ul> <li>переменное число параметров должно быть одного типа</li> <li>они рассматриваются как массив в методе</li> <li>они должны быть последним параметром метода</li> </ul><p>чтобы понять эти ограничения, рассмотрим метод, приведенный в следующем фрагменте кода, который используется для возврата наибольшего целого числа в списке целых чисел:</p><pre><code>private static int largest(int... numbers) { int currentlargest = numbers[0]; for (int number : numbers) { if (number > currentlargest) { currentlargest = number; } } return currentlargest; } </code></pre><p>oracle certified associate java se 7 programmer study guide 2012</p>

<p>да, это возможно:</p><pre><code>public void mymethod(int...numbers) { ... } </code></pre>

<p>для различных типов аргументов есть <strong>3-dots</strong>:</p><pre><code>public void foo(object... x) { string first = x.length > 0 ? (string)x[0] : "hello"; int duration = x.length > 1 ? integer.parseint((string) x[1]) : 888; } </code></pre><p>тогда назови это</p><pre><code>foo("hii"); foo("hii", 146); </code></pre><p>для безопасности используйте вот так: <br/><code>if (!(x[0] instanceof string)) { throw new illegalargumentexception("..."); }</code></p><blockquote> <p>основным недостатком этого подхода является то, что если дополнительные параметры имеют разные типы, вы теряете статическую проверку типов. пожалуйста, смотрите <a href="https://stackoverflow.com/a/12994104/2377343"><strong>больше вариантов</strong></a> .</p> </blockquote>

<p>да ... после java 5: <a href="http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html">http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html</a> </p>

<p>да, java разрешает <code>vargs</code> в параметре метода. </p><pre><code>public class varargs { public int add(int... numbers) { int result = 1; for(int number: numbers) { result= result+number; } return result; } } </code></pre>