Dies ist in Java 6 nicht wirklich möglich, es sei denn, Sie verwenden OSGI, von dem ich annehme, dass Sie es nicht sind. was ich normalerweise tun, um Klassen zu verbergen, ist die Verwendung von Paket-freundlichen Klassen für Implementierungen - aber Sie müssen möglicherweise noch einige Klassen offenlegen, wenn Sie Implementierungsklassen leben in einem separaten Paket sind.
Beispiel:
package com.example;
public class Service { }
nehmen die API-Klasse verwendet ServiceImpl
wie es Implementierung ist
jetzt, wenn ServiceImpl
wohnt im selben Paket, das Sie vielleicht entfernen es ist public class Modifikator und es wird nicht sein zugänglich außerhalb des Pakets ...
Wenn es in einem anderen Paket (Ihrem Fall) lebt, muss es öffentlich sein:
package com.example.impl;
public class ServiceImpl { }
aber alle Implementierungsdetails (bezogen Klassen verwendet es) aus dem gleichen Paket muss nicht öffentlich sein!
In der Regel werden Jars mit dem Befehl 'jar' erstellt. Ant-, Maven- und andere Build-Tools sind einfach Verschleierungsprobleme. –
Vergesst das Bauwerkzeug nicht, jede Lösung könnte meine Bedürfnisse erfüllen. – glmxndr
Zugriffskontrolle funktioniert in Java nicht so ... – Nate