0

随机码:

// 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

4 回答 4

5

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

public List getAllContacts() {...}

这样做的问题是您不知道列表包含什么类型的类,泛型允许您指定它。因此,通过使用 ,<>您可以指定 List 包含的类,在本例中为Contact

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

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

于 2013-06-06T15:20:59.760 回答
1

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

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

于 2013-06-06T15:19:44.310 回答
1

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

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

于 2013-06-06T15:17:14.683 回答
0

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

于 2013-06-06T15:20:14.273 回答