2011-02-01 8 views
6

別のクラスの別のクラスの内部クラスを使用したいという状況があります。 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; 
     } 
    } 

} 

今私は別でニック・マイデータクラスを使用します。

どうすればいいですか?

ありがとうございました。あなたが囲むクラスからの範囲外である他のクラスから内部クラスのオブジェクトを作成することができる場合

+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であり、InnerクラスはMydata であり、私たちは別のクラスからMydataを呼び出します。 YourData .. 以下のステートメントよりも使用できます。

構文: outerclass.innerclass = new outerclass.innerclass();

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

注:中わたクラスは静的である場合に限り、これは使用することができます。..

関連する問題