Ich entwickle eine Bibliothek (jar) für Android und habe eine Situation, wo ich meine Klasse oder Methode nur innerhalb meiner Bibliothek zugänglich sein möchte, aber nicht außerhalb meiner Bibliothek. Wenn kein Modifier verwendet wird, wird Klasse innerhalb dieses Pakets zugänglich gemacht, aber ich bin in einer Situation, in der diese Klasse nicht ohne Modifizierer public
verwendet werden kann, da die Verwendung von keinem Modifier in anderen Paketen, die ich nicht möchte, unzugänglich ist. Zum Beispiel ich eine Klasse sagen,Hide Methode/Klasse mit @Hide in Annotation
public class Globals {
public static String thisDeviceAddress;
public static String thisDeviceIP;
public static String thisDeviceName = "";
}
Diese Klasse überall zugänglich ist. Das Problem ist, dass ich möchte, dass es innerhalb meiner Bibliothek zugänglich ist, die ich entwickle, aber nicht außerhalb der Bibliothek. Ich habe erfahren, dass die Verwendung der Annotation @hide
das Problem lösen wird. Zum Beispiel:
/**
* @hide
*/
class Globals {
public static String thisDeviceAddress;
public static String thisDeviceIP;
public static String thisDeviceName = "";
}
Ich googeln darüber viel, kann aber nicht einen Weg zu implementieren @hide
finden. Wenn Sie nur @hide
ohne eine Bibliothek verwenden, wurde die Klasse nicht ausgeblendet. Also, bitte geben Sie mir die richtige Anleitung. Welche Bibliothek soll verwendet werden? ein Ausweg, um dieses Problem zu lösen?
'@ hide' wird nicht funktionieren - es entfernt nur ein Symbol aus dem Stub android.jar, wenn das SDK erstellt wird, so dass Code nicht geschrieben werden kann, um direkt darauf zuzugreifen. Die Symbole sind in der Laufzeit vorhanden und können über Reflektion aufgerufen werden. Aber das ist keine Lösung für Ihr Problem. – laalto
Danke für die Antwort. Ich habe kein Problem, wenn Klasse/Methode durch Reflektion zugänglich gemacht wird. Aber ich möchte nicht, dass es direkt sichtbar ist. Wenn es funktioniert, lassen Sie mich bitte wissen, was für die Verwendung von @hide eingerichtet werden muss. – Dipendra
@Dipendra, ich habe die gleiche Situation hier. Haben Sie eine Lösung dafür gefunden? –