2012-10-18 3 views
2

공개 API의 일부가되어서는 안되는 공개 패키지/클래스가 있습니다. 그러나 핵심 프로젝트는 또한 공용 API를 사용하기 때문에 나는 새로운 API-maven 번들을 만들 수 없다고 생각한다.공개 API에 속해서는 안되는 공개 패키지/클래스

일반적인 경우이지만 괜찮은 액세스를 허용하지 않는 Java 문제라고 생각합니다.

공개 API의 일부가되어서는 안되는 공용 클래스에 대한 액세스를 "보호"하는 방법에 대한 힌트가 있습니까? 그러나 실제로는 대부분의 개발자가 생각하지 않았거나 최소한 이러한 클래스를 외부에서 액세스하지 못하도록 보호하지 않은 일반적인 경우 인 것으로 보입니다.

+1

나는 따라 가지 않습니다. 이 수업을 통제합니까? 왜 그냥 공개하지 않을 수 없습니까? –

+0

네,하지만 내 프로젝트의 다른 패키지에서 사용하고 있습니다. 예를 들어 org.sirix.axis, org.sirix.axis.filter, org.sirix.access, org.sirix.node, org.sirix.api (for 공용 API) 및 기타 패키지/클래스. org.sirix.access.NodeReadTrxImpl은 org.sirix.api.NodeReadTrx를 구현합니다. org.sirix.node 패키지의 노드도 사용하고 있습니다. 또는 나는 무엇인가 놓쳤 느냐? 이 경우 적어도 public 이외의 액세스 수정자를 제공해서는 안됩니다. – Johannes

답변

1

일반적으로 액세스하면 안되는 클래스는 "internal"이라는 다른 패키지에 저장됩니다. 따라서 API 클래스의 경우 com.company.application이고 구현 클래스의 경우 com.company.application.internal이됩니다. 그러나 이것의 집행은 없습니다. OSGI 모델에서는 패키지가 번들에서 내 보내지 만 일반 Java에서는 내보내지지 않는 것을보다 세부적으로 제어 할 수 있습니다.