저는 Kotlin으로 테스트 중이며 테스트 App 프로젝트에서 가져와 사용할 작은 라이브러리를 작성하고 있습니다.내부 클래스 호출 객체 함수를 반환하십시오.
라이브러리 프로젝트에서 클래스를 앱 프로젝트에 표시하고 싶지 않기 때문에 internal
으로 표시했지만 라이브러리에 대한 단일 진입 점을 갖고 싶습니다. 코 틀린 object
이
LIBRARY
object Library {
fun getComponent() = AwesomeComponent()
}
internal class AwesomeComponent() {
// some implementation
}
TEST APP
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val component = Library.getComponent()
}
}
문제 아래 그림처럼이 컴파일되지 않는다는 것입니다 때문에 internal
형식을 반환하기 때문에뿐만 아니라 내부로 표시 할 필요는 없지만 이렇게하면 기능을 숨겨 object
라이브러리에서 함수 TestApp에서.
또 다른 옵션은 내가 내려다하고 쉬운 해결책은 거기에서 모든 internal
수정을하지 그래서 TestApp가이 라이브러리 방법을 볼 수 있습니다,하지만 그것은 또한 라이브러리 프로젝트
내부 클래스를 볼 수있을 것입니다 여기 또는 도서관 프로젝트의 패키지와 구조를 다시 계획해야합니까? (그 경우 어떻게해야할지 모르겠다)
API는 일반적으로 "인터페이스 AwesomeComponent"와 "내부 클래스 AwesomeComponentImpl() : AwesomeComponent"라는 "더 나은"이름을 가져야합니다. –
좋은 지적 - 나는 단지 원래의 코드에 최소한의 변화로 설명하고 싶었다. – zsmb13