2011-02-01 4 views
6

다른 클래스의 다른 클래스의 내부 클래스를 사용하려는 상황이 있습니다. 같은 ...자바의 다른 클래스에서 중첩 클래스를 사용하는 방법은 무엇입니까?

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

} 

는 지금은 다른에 MYDATA 클래스를 사용하고 싶습니다.

어떻게하면됩니까?

감사합니다. 당신이 당신의 바깥 쪽 클래스에서 범위를 벗어난 다른 클래스의 내부 클래스의 객체를 생성 할 수있는 경우

+3

당신은 이름 충돌을 피하기 위해 예를 포맷시겠습니까 .. 사용할 수 있습니다 들여 쓰기를 해결하기? – Nicolas

+0

당신은 할 수 있지만, 당신이 그것을 최고 수준으로 만들어야한다고 생각하지 않습니다. (Btw : 1.1 이후의 용어는 "정적 내부 클래스"에 대한 중첩 클래스입니다. 정적이 아닌 중첩 클래스에 대한 내부 클래스입니다.) –

답변

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

그래서 중첩 클래스는 마치 외부 클래스 범위 안에있는 것처럼 보입니까? –

+0

No. 여기서 MyData는 정적 인 내부 클래스입니다. Id는 부모 클래스에 의존하지 않으며 한정 클래스의 내부에 대한 액세스 권한이 없습니다. 잘못된 서식으로 인해 실수가 수정되었습니다. –

+0

(이전 코멘트에 대해 죄송합니다. 내부 클래스 선언에서 정적을 놓쳤습니다.) 정적이 아닌 내부 클래스는 외부 클래스의 경계 내에 있으며 실제로 외부의 인스턴스가없는 내부의 인스턴스를 가질 수 없습니다. 정적 인 내부 클래스는 그 둘러싸는 클래스 내에 캡슐화되어 있지만 그것에 대한 참조는 포함하지 않으며, 본질적으로 별도의 클래스처럼 동작합니다. – berry120

19

정적 중첩 클래스

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

내부 클래스

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

More about Nested Classes

2

완전한 이름을 사용하는 것보다 .... 여기에서 당신의 바깥 쪽 클래스는 ListData이고 내부 클래스는 Mydata 이고 다른 클래스에서 Mydata를 호출합니다. 귀하의 데이터 .. 우리는 아래의 진술보다 ..

구문 :외부 클래스. 내부 클래스 (새로운);

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

참고 :이 innner 클래스는 정적 인 경우에만

관련 문제