【问题标题】:what does this code <> mean in java [duplicate]这个代码<>在java中是什么意思[重复]
【发布时间】:2013-06-06 15:16:06
【问题描述】:

随机码:

// Getting All Contacts
public List<Contact> getAllContacts() {
    List<Contact> contactList = new ArrayList<Contact>();
    // Select All Query
    String selectQuery = "SELECT  * FROM " + TABLE_CONTACTS;

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            Contact contact = new Contact();
            contact.setID(Integer.parseInt(cursor.getString(0)));
            contact.setName(cursor.getString(1));
            contact.setPhoneNumber(cursor.getString(2));
            // Adding contact to list
            contactList.add(contact);
        } while (cursor.moveToNext());
    }

    // return contact list
    return contactList;
}

看看哪里写的

public List<Contact> getAllContacts() {

所以我想问一下,为什么它需要在 List 旁边的标签内添加“Contact”类? 有人可以在这里帮助我吗?

我什至尝试用谷歌搜索 Java 中标签的使用,但我找不到任何东西。

【问题讨论】:

标签: java generics tags


【解决方案1】:

它不需要返回类型中的Contact 类。事实上,在旧版本的 java 中,在 JDK 5 之前,这是编写该方法的唯一方法。

public List getAllContacts() {...}

这个问题是你不知道 List 包含什么类型的 Class,Generics 允许你指定这个。因此,通过使用&lt;&gt;,您可以指定列表包含的类,在本例中为Contact

public List<Contact> getAllContacts() {...}

通过明确返回类,它允许编译器进行类转换检查,并允许您编写更容易调试的代码,因为您知道您在该列表中得到了什么。

【讨论】:

  • 很好的例子。谢谢
【解决方案2】:

它不是一个标签,它是创建一个专门针对适当类型的泛型类型的实例。 List&lt;&gt; 是一个通用列表;它可以包含任何东西。 List&lt;Contact&gt; 是一个列表,其中列表中的元素是 Contact 类的实例。

http://docs.oracle.com/javase/tutorial/extra/generics/intro.html

【讨论】:

    【解决方案3】:

    它被称为 Generics,自 JDK 5 开始引入。Java List 已被通用化以允许开发人员指定类型(称为参数化类型)。这基本上可以翻译为“联系人列表”。您可以将Contact 添加到列表中并从列表中检索Contact

    按照Oracle Website 上的泛型教程进行操作。

    【讨论】:

    • List是参数化类型还是开发者指定的类型?
    • 不,Contact 是参数化类型。 &lt;&gt; 中的任何内容都是参数化类型。
    • 但是Contact 不必知道它在哪里使用。如果Contact是参数化类型,那么不是所有类型都是参数化类型吗?
    • 我不明白你的意思。您只是在使用包含Contact 的列表。在哪里使用它是无关紧要的。
    • 我们同意限定词“参数化类型”表示某些东西。我不认为它表示使用类型的上下文,而是表示类型本身。因此我认为List 是这里的参数化类型,因为它接受类型参数。
    【解决方案4】:

    这就是所谓的“通用”。在这段代码中,它的意思是“联系人类型列表”这是一个很好回答的问题:Java Generics: List, List<Object>, List<?>

    【讨论】:

    • 感谢您的链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 2012-12-11
    相关资源
    最近更新 更多