这段代码是什么<>在java中意思

时间:2013-06-06 15:16:06

标签: java generics tags

随机代码:

// 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中使用标签,但我找不到任何东西。

4 个答案:

答案 0 :(得分:5)

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

public List getAllContacts() {...}

问题在于您不知道列表包含哪种类型,Generics允许您指定此类。因此,通过使用<>,您可以指定列表中包含的类,在本例中为Contact

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

通过使返回类显式,它允许编译器执行类转换检查,并允许您编写更容易调试的代码,因为您知道在该列表中获得的内容。

答案 1 :(得分:1)

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

按照Oracle Website上的泛型教程。

答案 2 :(得分:1)

它不是标签,它创建了一个专用于相应类型的泛型类型的实例。 List<>是一个通用列表;它可以包含任何东西。 List<Contact>是一个列表,其中列表中的元素是Contact类的实例。

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

答案 3 :(得分:0)

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