¿Clase interna dentro de su superclass abstracta en Kotlin?

Si un set de classs internas son las únicas implementaciones (subclasss) de su class externa que contiene el resumen, ¿cómo se instancian?

abstract class A { inner class A1 : A() inner class A2 : A() } 

En otras palabras, ¿cuál es la syntax para build una instancia de A1 o A2 ?

EDITAR: … fuera del cuerpo de la class A.

¿Estás buscando esto?

 abstract class A { fun doSome() { // OK val a1 = A1() val a2 = A2() } inner class A1 : A() inner class A2 : A() } 

Creo que probablemente quiera build instancias de A1 / A2 fuera de A, como:

 abstract class A { inner class A1 : A() inner class A2 : A() } fun doSome() { // Error val a1 = A1() val a2 = A2() } 

Esto no está permitido tanto en Kotlin como en Java, porque la class interna tiene ponters para la class externa. Si quiere build A1 / A2 fuera de A , simplemente elimine los modificadores inner .

 abstract class A { class A1 : A() class A2 : A() } fun doSome() { // OK again val a1 = A.A1() val a2 = A.A2() } 

Además, además, como dijiste que es

un set de classs internas son las únicas implementaciones (subclasss) de su class externa que contiene el resumen

Puede replace abstract modificador abstract por sealed . Esto ayudará a Kotlin a hacer checkout de exhautividad when exprese.

  • ¿Cómo puedo mostrar su valor en el código .parseList {DayForecast (HashMap (it))} en Android Studio 3.0?
  • ¿Por qué Kotlin no permite usar lateinit con types primitivos?
  • Método modificado con nueva condición
  • Cómo inicializar widgets en Android usando kotlin
  • KDoc: insert fragment de código
  • ¿Por qué todavía es necesario lanzar el tipo aunque ya se haya asegurado en este ejemplo?
  • SparkJava usando Kotlin y WebSockets
  • Cómo burlarse de un object singleton Kotlin?
  • ¿Por qué aparece una discrepancia de tipo cuando bash devolver un valor para un parámetro genérico verificado?
  • Acceder a las properties de una tarea en gradle kotlin
  • Java -> Conversión de Kotlin con types crudos