2011-02-01 36 views
6

Tôi có một số tình huống mà tôi muốn sử dụng lớp bên trong của lớp khác trong lớp khác. như ...cách sử dụng lớp lồng trong lớp khác trong java?

public class ListData { 
    public static class MyData { 

     public String textSongName, textArtistName, textDuration, textDownloadPath, 
       textSongSize, textAlbumName, textUrl; 
     public boolean enable; 

     public MyData(String songName, String artistName, String duration, 
       String downloadPath, String songSize, String albumName, 
       String url, boolean e) { 
      textSongName = songName; 
      textArtistName = artistName; 
      textDuration = duration; 
      textDownloadPath = downloadPath; 
      textSongSize = songSize; 
      textAlbumName = albumName; 
      textUrl = url; 
      enable = e; 
     } 
    } 

} 

bây giờ tôi muốn sử dụng lớp Mydata ở nhóm khác.

Tôi làm cách nào để thực hiện việc này?

Cảm ơn.

+3

bạn có thể vui lòng định dạng lại ví dụ của bạn để tránh xung đột tên và sửa thụt đầu dòng? – Nicolas

+0

Bạn có thể, nhưng bạn không nghĩ rằng bạn nên làm cho nó cấp cao nhất. (Btw: terminology post-1.1 là lớp lồng nhau cho một "lớp bên trong tĩnh". Lớp bên trong cho các lớp lồng nhau không tĩnh.) –

Trả lời

21
ListData.MyData myData = new ListData.MyData(); 
+0

Vì vậy các lớp lồng nhau như thể chúng tồn tại bên trong phạm vi lớp ngoài? –

+0

Không. Ở đây, MyData là một lớp bên trong tĩnh. Id không phụ thuộc vào lớp cha và không có quyền truy cập vào nội bộ của lớp bị chặn. Tôi đã sửa lỗi, do định dạng sai. –

+0

(Xin lỗi cho bình luận trước đó, bỏ qua tĩnh trong khai báo lớp bên trong.) Các lớp bên trong không tĩnh nằm trong giới hạn của lớp ngoài của chúng, trên thực tế bạn không thể có một thể hiện bên trong mà không có một bên ngoài. Các lớp bên trong tĩnh được đóng gói trong lớp kèm theo của chúng nhưng không chứa tham chiếu đến nó, về cơ bản chúng hoạt động giống như các lớp riêng biệt. – berry120

19

lớp Nested tĩnh

OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass(); 

Lớp Nội

OuterClass.InnerClass innerObject = outerObject.new InnerClass(); 

More about Nested Classes

2

Nếu bạn có thể tạo đối tượng lớp bên từ lớp khác đó là ra khỏi phạm vi từ lớp kèm theo của bạn bạn nên sử dụng tên đầy đủ của nó .... Ở đây, lớp bên ngoài của bạn là ListData và lớp bên trong của bạn là Mydata và chúng tôi gọi Mydata từ một lớp khác ví dụ. YourData .. so với chúng tôi có thể sử dụng câu lệnh bên dưới ..

Cú pháp: outerclass.innerclass = new outerclass.innerclass();

=>ListData.MyData objectname = new ListData.MyData();

LƯU Ý: đây có thể sử dụng chỉ khi lớp innner là tĩnh ..

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