Java相当于javascript method.apply(context,args)

时间:2014-12-25 14:59:48

标签: java

我想创建静态方法来重用android docs中的示例:

private class DownloadWebpageTask extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... urls) {

            // params comes from the execute() call: params[0] is the url.
            try {
                return downloadUrl(urls[0]);
            } catch (IOException e) {
                return "Unable to retrieve web page. URL may be invalid.";
            }
        }
        // onPostExecute displays the results of the AsyncTask.
        @Override
        protected void onPostExecute(String result) {

        }
    }

将doInBackground中的所有参数传递给downloadUrl。 如何用Java做到这一点?

谢谢。

2 个答案:

答案 0 :(得分:0)

Java中没有等同于apply()

您可以将不定数量的参数作为数组传递。 声明您的方法如下:

void method(String [] urls){
}

并称之为:

object.method(new String [] {"arg1", "arg2"});

或更好的方式:

void method2(String ...urls){
}

你可以简单地称之为:

object.method2("arg1");
object.method2("arg1", "arg2");
object.method2("arg1", "arg2", "arg3");

它有效,因为事实上,编译器会将上面的表达式更改为:

object.method2(new String [] {"arg1"});
object.method2(new String [] {"arg1", "arg2"});
object.method2(new String [] {"arg1", "arg2", "arg3"});

答案 1 :(得分:0)