Android 转换为 Kotlin。如何在构造函数super中调用内部方法

Android conversion to Kotlin. How to call inner method in constructor super

这是我的方法:

private static class AvatarNotFound
        extends Throwable
{
    public AvatarNotFound(String message, @NonNull AddressableAvatarView addressableAvatarView)
    {
        super(message + getErrorMessageSuffix(addressableAvatarView));
    }

    private static String getErrorMessageSuffix(@NonNull AddressableAvatarView addressableAvatarView)
    {
        return ". Addressable: " + addressableAvatarView.toString();
    }
}

将它转换为 Kotlin returns 这段代码,将变成这样:

   private open class AvatarNotFound(message: String, addressableAvatarView: AddressableAvatarView) : Throwable(message + getErrorMessageSuffix(addressableAvatarView)) {

    private fun getErrorMessageSuffix(addressableAvatarView: AddressableAvatarView): String {
        return ". Addressable: $addressableAvatarView"
    }
   }

但是它说 getErrorMessageSuffix 是一个未解决的引用? 我怎样才能让构造函数识别它?

试试这个可能对你有帮助:

companion object{
        private fun getErrorMessageSuffix(addressableAvatarView: AddressableAvatarView): String {
            return ". Addressable: " + addressableAvatarView.toString()
        }
    }
}

您可以在此处使用伴随对象,这将允许使用 class 名称访问您的方法。

companion object
    {
        private fun getErrorMessageSuffix(addressableAvatarView: AddressableAvatarView): String 
         {
            return ". Addressable: $addressableAvatarView"
        }
    }