Проблемы, наследующие внутренний класс java

Я создаю андроидские живые обои, используя Kotlin. Для этого требуется класс, который расширяет WallpaperService, который содержит внутренний класс, который расширяет WallpaperService.Engine.

Поэтому я написал это:

import android.service.wallpaper.WallpaperService import android.service.wallpaper.WallpaperService.Engine public class MyWallpaperService : WallpaperService() { override fun onCreateEngine(): Engine = MyEngine() private inner class MyEngine : Engine() { } } 

Проблема в том, что во время компиляции я получаю следующие 2 ошибки:

 Error:java.lang.RuntimeException: Error generating constructors of class MyEngine with kind IMPLEMENTATION Error:java.lang.UnsupportedOperationException: Don't know how to generate outer expression for lazy class MyWallpaperService 

Я не могу понять, почему это происходит, поэтому любая помощь будет очень признательна.

Solutions Collecting From Web of "Проблемы, наследующие внутренний класс java"

См. KT-6727

Вы можете попробовать следующее обходное решение:

 private inner class MyEngine : super.Engine() { } 

Лучшее решение, которое я нашел, – использовать промежуточный Java-класс:

 public class Intermediate extends WallpaperService.Engine { public Intermediate(WatchfaceService outer) { outer.super(); } } 

Тогда внутренний класс в вашем Kotlin WallpaperService должен наследовать Intermediate, передавая внешний класс в качестве параметра.

 public class MyWallpaperService : WallpaperService() { override fun onCreateEngine(): Engine = MyEngine()​ private inner class MyEngine : Intermediate(this) { } }  public class MyWallpaperService : WallpaperService() { override fun onCreateEngine(): Engine = MyEngine()​ private inner class MyEngine : Intermediate(this) { } }