当前位置: 首页 > 面试题库 >

Java泛型-此语法的用途是什么?

章誉
2023-03-14
问题内容

以下这部分代码<String, Void, Bitmap>是什么意思?我什至不知道这个语法叫什么。

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {

}

这是原始代码(可从此处找到:http : //developer.android.com/guide/components/processes-and-
threads.html
):

public void onClick(View v) {
    new DownloadImageTask().execute("http://example.com/image.png");
}

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
    /** The system calls this to perform work in a worker thread and
      * delivers it the parameters given to AsyncTask.execute() */
    protected Bitmap doInBackground(String... urls) {
        return loadImageFromNetwork(urls[0]);
    }

    /** The system calls this to perform work in the UI thread and delivers
      * the result from doInBackground() */
    protected void onPostExecute(Bitmap result) {
        mImageView.setImageBitmap(result);
    }
}

问题答案:
AsyncTask<String, Void, Bitmap>

告诉AsyncTask使用3种不同的类型进行描述,当您使用AsyncTask时,将String作为第一个参数,将Void作为第二个参数,将Bitmap作为第三个参数。

从Java5开始,这在Java中称为泛型。请阅读本教程以了解有关泛型的更多信息。这是有关android
AsyncTasktask如何使用泛型的javadoc。

更新: 从AsyncTask javadoc

1) Params, the type of the parameters sent to the task upon execution.
2) Progress, the type of the progress units published during the background computation.
3) Result, the type of the result of the background computation.


 类似资料:
  • 问题内容: 这可以返回一个整数列表: 但是,如果我想让调用者指定通用类型怎么办?像这样的东西,尽管在语法上我不确定如何去做: 用法是: 问题答案: 关于参数化类型的通用工厂方法 看来您想编写方便的工厂方法来实例化通用集合。 您可以编写如下通用方法: 然后,您可以简单地编写: 请注意,在某些情况下,上述方法不必须的,你可以选择离开了实施的名字出来的方法和只使用名称(例如,)。 有效Java 2nd

  • 问题内容: 我不明白未绑定通配符泛型的用途。具有上限的绑定通配符泛型非常有意义,因为使用多态性,我可以使用该类型或集合。但是拥有可以是任何类型的泛型有什么意义呢?它是否违背了泛型的目的?编译器没有发现任何冲突,并且在类型擦除之后,就好像没有使用任何泛型一样。 问题答案: 当您的方法实际上并不关心实际类型时,未绑定类型可能很有用。 一个原始的例子是这样的: 由于可以处理所有引用类型(通过调用),因此

  • 问题内容: 我看到了有关一个不相关问题的一些代码,但它使我感到好奇,因为我从未见过Java Generics这样的构造。创建可以将自身或自身后代用作类型参数的泛型类的用途是什么。这是示例: 首先想到的是一个以列表为参数的列表。使用此代码感到很奇怪,如何声明A类型的变量?递归声明! 这还行吗?如果是这样,您在代码中看到过吗?如何使用? 编辑 确实,事实证明我的问题与这个问题相同,只是用不同的措词,但

  • 问题内容: 我是java泛型的新手,我的问题是: 在上面的语句中,当函数的返回类型为void时,为什么我们以前使用过?为什么此语法有效? 根据理论,方法本身可以是返回类型吗? 我的参考程序是 问题答案: 在这里没有什么做的返回类型; 这意味着这是一个通用函数,可以采用各种类型的数组。为了更容易理解,代码可能是这样的: 所以它告诉函数 “有一个通用类型,您接受的数组,因此,例如,如果我用您接受的通用

  • 问题内容: 我今天是第一次遇到Python 语句。我已经使用Python几个月了,甚至不知道它的存在!考虑到它的地位有些晦涩,我认为值得一问: 语句旨在用于什么? 你用它来做什么? 我需要了解任何陷阱,还是与其使用相关的常见反模式?有什么比这更好用的情况吗? 为什么没有更广泛地使用它? 哪些标准库类与之兼容? 问题答案: 我相信这已经在我之前的其他用户那里得到了回答,因此我仅出于完整性的考虑而添加

  • 问题内容: 我知道有两种在Java中创建String的方法: 通过第一种方式,Java一定会在字符串池中创建一个String对象并对其进行引用。(假设“ aaa”以前不在池中。) 使用第二种方法,将在堆中创建一个对象,但是jvm还会在字符串池中创建一个对象吗? 在这篇关于Java的字符串池的问题中,@ Jesper说: 如果您这样做: 那么池中将有一个String对象,一个代表文字“ abc”的>