Подтвердить что ты не робот

Что означает значение "String... params", если оно передано как параметр?

Я нашел этот код онлайн и там 1 часть, которую я не понимаю. Для метода doInBackground передан параметр String... params. Может ли кто-нибудь объяснить мне, что это значит? Что это ...?

public class AsyncHttpPost extends AsyncTask<String, String, String> {
    private HashMap<String, String> mData = null;// post data

    /**
     * constructor
     */
    public AsyncHttpPost(HashMap<String, String> data) {
        mData = data;
    }

    /**
     * background
     */
    @Override
    protected String doInBackground(String... params) {
        byte[] result = null;
        String str = "";
        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(params[0]);// in this case, params[0] is URL
        try {
            // set up post data
            ArrayList<NameValuePair> nameValuePair = new ArrayList<NameValuePair>();
            Iterator<String> it = mData.keySet().iterator();
            while (it.hasNext()) {
                String key = it.next();
                nameValuePair.add(new BasicNameValuePair(key, mData.get(key)));
            }

            post.setEntity(new UrlEncodedFormEntity(nameValuePair, "UTF-8"));
            HttpResponse response = client.execute(post);
            StatusLine statusLine = response.getStatusLine();
            if(statusLine.getStatusCode() == HttpURLConnection.HTTP_OK){
                result = EntityUtils.toByteArray(response.getEntity());
                str = new String(result, "UTF-8");
            }
        }
        catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        catch (Exception e) {
        }
        return str;
    }

    /**
     * on getting result
     */
    @Override
    protected void onPostExecute(String result) {
        // something...
    }
}
4b9b3361

Ответ 2

три точки остаются для vargars. вы можете получить к нему доступ, как String[].

Если метод принимает в качестве параметра varargs, вы можете вызвать его с несколькими значениями для типа vargars:

public void myMethod(String... values) {}

вы можете назвать myMethod("a", "b");

в values[0] myMethod values[0] равно "a", а values[1] равны "b". Если у вас есть метод с несколькими аргументами, аргумент vargars должен быть последним: например:

public void myMethod(int first, double second, String... values) {}

Ответ 3

Из javadocs:

public static String format(String pattern,
                                Object... arguments);

Три периода после окончательного типа параметра указывают, что последний аргумент может быть передан как массив или как последовательность аргументов. Варгары могут использоваться только в конечной позиции аргумента.