이 찾고 계십니까? 내부 클래스는 외부에 ponters를 보유하고 있기 때문에,
abstract class A {
inner class A1 : A()
inner class A2 : A()
}
fun doSome() { // Error
val a1 = A1()
val a2 = A2()
}
이 코 틀린 및 Java 모두에서 사용할 수 없습니다 :
abstract class A {
fun doSome() { // OK
val a1 = A1()
val a2 = A2()
}
inner class A1 : A()
inner class A2 : A()
}
나는 당신이 아마처럼 외부 A1/A2의 인스턴스를 구축 할 생각 수업. A1
/A2
을 A
외부에 구성하려면 inner
수정자를 제거하기 만하면됩니다. 당신이 말한 이후
abstract class A {
class A1 : A()
class A2 : A()
}
fun doSome() { // OK again
val a1 = A.A1()
val a2 = A.A2()
}
또한, 또한,
내부 클래스의 집합 당신은 abstract
를 대체 할 수있는 자신의 외부 추상적 포함하는 클래스
의 유일한 구현 (서브 클래스)가되어 있어요 수정 자 : sealed
. 이것은 코 틀린이 exhautiveness 체크를하는데 도움이 될 when
표현입니다.
네 말이 맞아. 나는 ** **의 바깥쪽에 ** 말 했어야했다. [여기에서 내가 해결하려고하는 특정 사용 사례] (https://stackoverflow.com/questions/47361279)는 봉인 된 클래스였습니다. A는 실제로 준 인터페이스이며 A1과 A2는 내가 제어하지 않는 박스형 외국 클래스입니다. 아이디어를 얻었다면 거기에 대답하고 어쩌면 대답 할 수 있겠습니까? 감사. – sirksel
외부 클래스의 인스턴스로 내부 클래스를 생성하면됨을 언급하십시오. 어쩌면 내부 클래스의 인스턴스를 반환하는 외부 클래스에 함수를 작성해야합니다. – ice1000