2011-12-29 19 views
6

Powiel możliwe:
What is Type<Type> called?
What does List<?> mean in java generics?Co to jest lista <?> w języku Java (Android)?

package com.xyz.pckgeName; 

import java.util.ArrayList; 
import java.util.List; 

public class Statement { 

// public String 
public String status; 
public String user_id; 
public String name; 
public String available_balance; 
public String current_balance; 
public String credit_card_type; 
public String bank_id; 
public List<Statements> statements = new ArrayList<Statement.Statements>(); 

public class Statements { 
    public String month; 
    public String account_id; 
    public String user_id; 
    public String id; 
    public List<Transaction> transactions = new ArrayList<Transaction>(); 
} 
} 

Czy ktoś może mi wyjaśnić, co te dwa stwierdzenia oznaczają

public List<Statements> statements = new ArrayList<Statement.Statements>(); 

public List<Transaction> transactions = new ArrayList<Transaction>(); 
+0

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

+0

dodałem "rodzajowych" tag dla Ciebie. Wiem, że o tym nie wiedziałeś, ale zrobiłem to. Mam nadzieję, że doprowadzi to do niektórych banalnie podobnych pytań pokrewnych. –

+0

http://stackoverflow.com/questions/1844770/what-does-list-mean-in-java-generics, http://stackoverflow.com/questions/2218216/in-java-what-does-it-mean -when-a-type-to-by-by-angle-nawiasy-na-liście –

Odpowiedz

15

To Generics w java

List<?> zasadniczo tłumaczone jako "Listy niewiadomych" , czyli listy nieznanych typów. Numer ? jest znany jako Wildcard (co w zasadzie oznacza: nieznany).


public List<Statements> statements = new ArrayList<Statement.Statements>(); 

To w istocie tworzy List że akceptuje tylko Statement.Statements. Wszystko poza adresem Statement.Statements, które chcesz dodać do statements spowoduje błąd kompilacji. To samo dotyczy public List<Transaction> transactions = new ArrayList<Transaction>();. Oznacza to, że List jest bounded na typ Statement.Statements (na zmiennej statements).

+1

Czy możemy po prostu powiedzieć, że przechowuje obiekty Instrukcje, które w klasie zagnieżdżonej w Wyciągu? –

+0

@Veer, tak właśnie powiedziałem. –

+0

Dziękuję za odpowiedź, pozwolę sobie przeczytać dokumentację i zrobić kilka przykładów, przegrywam i akceptuję odpowiedź :-) –

2

Powinieneś przeczytać o Generics, aby to zrozumieć. Lista jest typem surowym, który może być listą obiektów, takich jak łańcuchy, opakowania i obiekty zdefiniowane przez użytkownika.

public List<Statements> statements = new ArrayList<Statement.Statements>(); 

Powyższy kod mówi, że instrukcje są odniesieniem do ArrayList obiektów Statement. Określa, że ​​lista będzie zawierała obiekty instrukcji, które są klasą wewnętrzną klasy Statement.

List<?> służy do wypisywania listy nieznanego typu.