2011-02-01 20 views
6

Tengo alguna situación en la que quiero usar clase interna de otra clase en otra clase. como ...cómo usar la clase anidada en otra clase en 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; 
     } 
    } 

} 

ahora quiero utilizar la clase Mydata en otro.

¿cómo puedo hacer esto?

Gracias.

+3

Puede usted por favor formatear el ejemplo para evitar conflicto de nombres y corregir la sangría? – Nicolas

+0

Puedes, pero ¿no crees que deberías subir de nivel? (Por cierto: la terminología post-1.1 es clase anidada para una "clase interna estática". Clase interna para clases anidadas no estáticas). –

Respuesta

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

¿Las clases anidadas son como si existieran dentro del alcance de la clase externa? –

+0

No. Aquí, MyData es una clase interna estática. Id no depende de la clase principal y no tiene acceso a las partes internas de la clase limitada. Solucioné un error causado por un formato incorrecto. –

+0

(Disculpa los comentarios anteriores, omitiste la estática en la declaración de la clase interna.) Las clases internas no estáticas están dentro de los límites de su clase externa, de hecho no puedes tener una instancia del interior sin una de las externas. Las clases internas estáticas están encapsuladas dentro de su clase envolvente pero no contienen ninguna referencia a ellas, esencialmente se comportan como clases separadas. – berry120

19

clases anidadas estáticas

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

Clases Internas

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

More about Nested Classes

2

Si se puede crear el objeto de la clase interna de otra clase que está fuera del alcance de su clase envolvente de lo que debería usar su nombre completo ... Aquí, su clase externa es ListData y su clase interna es Mydata y llamamos Mydata de otra clase, por ejemplo. YourData ... de lo que podemos utilizar a continuación declaración ...

Sintaxis: outerclass.innerclass = new outerclass.innerclass();

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

NOTA: esto se puede utilizar sólo cuando la clase innner es estática ..

Cuestiones relacionadas