Class <something>在Java中意味着什么?</something>

时间:2012-04-24 17:57:42

标签: java

  

此问题与以下内容完全相同:
  What does <> (angle brackets) mean in Java?

我正在阅读Android中的AsyncTask。我有这个示例代码:

private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
     protected Long doInBackground(URL... urls) {
         int count = urls.length;
         long totalSize = 0;
         for (int i = 0; i < count; i++) {
             totalSize += Downloader.downloadFile(urls[i]);
             publishProgress((int) ((i / (float) count) * 100));
         }
         return totalSize;
     }

     protected void onProgressUpdate(Integer... progress) {
         setProgressPercent(progress[0]);
     }

     protected void onPostExecute(Long result) {
         showDialog("Downloaded " + result + " bytes");
     }
 }

它应该被调用:

new DownloadFilesTask().execute(url1, url2, url3);

我无法理解<URL, Integer, Long>的含义。我在其他类String<>中看过它们,但我不知道它们的目的是什么。

2 个答案:

答案 0 :(得分:2)

它定义了generics

的类型

例如:

List<Integer> list;

您声明类List的变量。但如果我是对的话,List就像这样宣布:

public interface List<T> extends Collection<T>

T是此类用户可以定义的类型的占位符。在我的例子中,我选择用整数填写T.在这种情况下,它意味着我将拥有一个整数列表。

答案 1 :(得分:0)

http://docs.oracle.com/javase/tutorial/java/generics/generics.html

但基本上意味着你有一些像

这样的容器
List<> aList

并且编译器需要知道它所持有的类型,因此您需要指定与容器相关联的类型

List<String> aList