2013-06-19 14 views

risposta

23

è possibile. Dichiara il tuo pubblico della classe interna , ma il suo costruttore privato. In questo modo puoi crearlo solo all'interno della tua classe di chiusura e di se stesso, ma non dall'esterno.

+1

Le classi veramente esterne hanno accesso al campo privato della classe interiore? Buono a sapersi se funziona, grazie! –

+0

Quindi questa soluzione è sbagliata? –

+1

No, questa soluzione è corretta, la classe esterna può vedere tutti i campi privati, i metodi e i costruttori delle classi interne. – WilQu

1

Per impostazione predefinita, se si desidera ottenere l'istanza della classe interna è necessario avere la classe esterna prima.

A inner class è un membro della relativa classe di chiusura.

Non è necessario fare nulla per questo.

classi annidate non statici (classi interne) hanno accesso ad altri membri della classe contenitrice, anche se sono dichiarate private

Spero ho capito la tua domanda nel modo giusto.

prega refer.

+0

costruttore dovrebbe essere disponibile solo per la classe esterna (quindi non può essere pubblico), ma dovrebbe essere possibile utilizzare questo oggetto dall'esterno (quindi la classe non può essere privata). –

0

Quindi fare private di classe interna.

public class Outer { 
    private class Inner {} 
     public String foo() { 
      return new Inner().toString(); 
     } 
} 

non può legalmente chiamare il costruttore di default privato perché è privato

+0

Quando Inner è privato, non posso usare questo fuori da Outer. Posso rendere l'interfaccia pubblica specifica per questa classe, ma voglio evitare questa soluzione, se esiste una migliore. –

+0

È la soluzione della tua domanda 'solo la classe esterna dovrebbe essere in grado di creare queste istanze'. puoi elaborare la tua domanda che cosa vuoi veramente !! non è chiaro. – iMBMT

+0

Solo l'oggetto 'Outer' dovrebbe avere accesso per costruire istanze di' Inner'. È chiaro ora? Scusate :) –

Problemi correlati