Sto rifattorizzando un progetto Android che sta diventando grande. Lint in esecuzione mi dà il numero JSMEAccesso membro privato tra classi esterne e interne. Considerando l'esempio seguenteIl costruttore della classe interna privata è anche privato?
public class Outer {
private Inner mInner = new Inner();
private class Inner {}
}
ottengo le informazioni
Name
private field Inner mInner
Location
class Outer (default package)
Problem synopsis
Access to private member of class 'Inner' at line 2
Problem resolution
Make 'Inner' constructor package-local
Applicando la risoluzione del problema cambia la sorgente di
public class Outer {
private Inner mInner = new Inner();
private class Inner {
Inner() {}
}
}
Sono un po 'confuso in questo momento. Fino ad ora ho pensato che l'esempio sarebbe equivalente a
public class Outer {
private Inner mInner = new Inner();
private class Inner {
public Inner() {}
}
}
Mi sbaglio in questo caso o è un problema di garza?
Possibile duplicato di [Dovremmo dichiarare un costruttore pubblico quando la classe è dichiarata come pacchetto privato?] (Http://stackoverflow.com/questions/243218/should-we-declare-a-public-constructor-when- la classe-è-dichiarata-come-pacchetto-pri) –
ogni volta che dichiari una classe privata, tutto ciò che appartiene a quella classe diventa privato – awsome
@ cricket_007 purtroppo no. Non copre la parte che la lint si lamenta. – tynn