반응형
코틀린의 개인 건설업자
Java에서는 클래스의 주 생성자를 숨김으로써 숨길 수 있습니다.private
액세스 할 수 있습니다.public
static
이 클래스 내의 메서드:
public final class Foo {
/* Public static method */
public static final Foo constructorA() {
// do stuff
return new Foo(someData);
}
private final Data someData;
/* Main constructor */
private Foo(final Data someData) {
Objects.requireNonNull(someData);
this.someData = someData;
}
// ...
}
어떻게 Kotlin과 같은 수준에 도달할 수 있을까요? 클래스를 분리하지 않고public
인터페이스와 aprivate
실장?생성자 만들기private
클래스 외부에서 액세스 할 수 없게 됩니다.같은 파일에서도 액세스 할 수 없습니다.
프라이빗 컨스트럭터가 있는 동안 퍼블릭컨스트럭터의 사용을 「에뮬레이트」하는 것과 같은 조작을 실시할 수도 있습니다.
class Foo private constructor(val someData: Data) {
companion object {
operator fun invoke(): Foo {
// do stuff
return Foo(someData)
}
}
}
//usage
Foo() //even though it looks like constructor, it is a function call
이는 Companion 개체를 사용하여 수행할 수 있습니다.
class Foo private constructor(val someData: Data) {
companion object {
fun constructorA(): Foo {
// do stuff
return Foo(someData)
}
}
// ...
}
컴패니언 오브젝트 내의 메서드는 주변 클래스의 멤버인 경우와 동일하게 도달할 수 있습니다(예:Foo.constructorA()
)
다음 Kotlin 문서를 참조하십시오.
https://kotlinlang.org/docs/reference/classes.html#constructors
https://kotlinlang.org/docs/reference/visibility-modifiers.html#constructors
class DontCreateMe private constructor () { /*...*/ }
This is the Answer
class Hide private constructor(val someData: Data) {
}
By declaring the constructor private, we can hiding constructor.
언급URL : https://stackoverflow.com/questions/46847734/private-constructor-in-kotlin
반응형
'programing' 카테고리의 다른 글
JavaScript 코드에 "No 'Access-Control-Allow-Origin' 헤더는 요청된 리소스에 있습니다" 오류가 표시되지만 Postman은 표시되지 않는 이유는 무엇입니까? (0) | 2022.12.09 |
---|---|
PHP dirname(_FILE__)에서 한 단계 위로 올라가는 방법 (0) | 2022.12.09 |
Linux에서 Java Application as a Service 실행 (0) | 2022.12.09 |
!중요한 스타일 덮어쓰기 (0) | 2022.12.09 |
JSON을 CSV로 변환하려면 어떻게 해야 합니까? (0) | 2022.12.09 |