在我的項目中,我們有大約20個不同的模塊,打包成獨立的jar文件,每個jar文件都有一些包。這些包中的一些類是公共的,因此在包之外是可見的,即使這些類應該被視爲模塊的私有類。是否有一個註釋處理器來執行模塊可見性規則?
鑑於Java沒有內置的模塊系統,我不想將OSGI引入到我的應用程序中。我正在尋找@Override註釋的一些方面,我可以堅持使用類型來聲明它們對模塊是私有的。然後讓一些註釋處理器執行這些規則。
沿着以下幾行。
@ModuleDefinition
public class FooModule{} // empty marker class so it can be referenced by other annotations
@ModulePrivate(FooModule.class)
public class SomePrivateFooModuleClas{}
@ModulePublic(FooModule.class)
public class SomePublicFooModuleClass{}
比方說,下面的代碼位於另一個模塊
@ModuleDefinition
public class BarModule{}
// the annotation processor should generate an error on the import
// statement below because the class being imported is module private
// and the class that the import belong to is not in the same module
import com.example.SomePrivateFooModuleClass;
@ModulePrivate(BarModule.class)
public class SomePrivateBarModuleClas{
SomePrivateFooModuleClass foo = ... etc
}
是否有任何開源庫/註解處理器做沿着我已經上文線的東西。
上述這樣的方案是否可以通過註釋處理器實現,或者超出了註釋處理器設計的功能。我不關心模塊的運行時隔離,停止和重新加載模塊,或osgi帶來的任何其他強大功能,我只是希望開發人員不要偶然使用模塊私有類。