2011-12-29 43 views
6

thể trùng lặp:
What is Type<Type> called?
What does List<?> mean in java generics?Danh sách <?> trong Java (Android) là gì?

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>(); 
} 
} 

bất cứ ai có thể giải thích cho tôi những gì hai câu lệnh này có ý nghĩa

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

tôi thêm "Generics" thẻ cho bạn. Tôi biết bạn không biết về nó, nhưng tôi đã làm. Hy vọng rằng nó sẽ dẫn đến một số câu hỏi liên quan đến tầm thường. –

+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-is-by-by-angle-brackets-as-in-list –

Trả lời

15

Đây là Generics trong java

List<?> được về cơ bản dịch là một "Danh sách các ẩn số" , ví dụ, một danh sách các loại chưa biết. ? được gọi là Wildcard (về cơ bản có nghĩa là không rõ).


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

này về cơ bản sẽ tạo ra một List mà chỉ chấp nhận Statement.Statements. Mọi thứ bên ngoài Statement.Statements mà bạn muốn thêm vào statements sẽ tạo ra lỗi biên dịch. Điều tương tự cũng áp dụng cho public List<Transaction> transactions = new ArrayList<Transaction>();. Điều này có nghĩa là Listbounded đối với loại Statement.Statements (trên số statements biến).

+1

Chúng ta có thể đơn giản nói rằng nó lưu trữ các đối tượng của các câu lệnh trong lớp lồng nhau trong Statement? ' –

+0

@Veer, đó là những gì tôi đã nói. –

+0

Cảm ơn bạn đã trả lời, hãy để tôi đọc tài liệu và thực hiện một số ví dụ, tôi đang upvoting và chấp nhận câu trả lời :-) –

2

Bạn nên đọc khoảng Generics để hiểu điều này. List là một kiểu thô có thể là danh sách các đối tượng như Strings, Wrapper và các đối tượng do người dùng định nghĩa.

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

Đoạn mã trên cho biết rằng câu lệnh là tham chiếu đến ArrayList of Statement Objects. Nó chỉ định rằng danh sách sẽ chứa các đối tượng Câu lệnh là lớp bên trong cho lớp Statement.

List<?> được sử dụng để nói danh sách loại không xác định.

Các vấn đề liên quan