Конвертация Android в Котлин. Как вызвать внутренний метод в конструкторе супер - PullRequest
0 голосов
/ 11 июля 2019

У меня есть такой метод:

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, он возвращает этот код, который станет таким:

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

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

Но это говорит о том, что getErrorMessageSuffix это неразрешенная ссылка? Как я могу заставить конструктор распознать это?

Ответы [ 2 ]

1 голос
/ 11 июля 2019

попробуйте это может помочь вам:

    companion object{
        private fun getErrorMessageSuffix(addressableAvatarView: AddressableAvatarView): String {
            return ". Addressable: " + addressableAvatarView.toString()
        }
    }
}
0 голосов
/ 11 июля 2019

Здесь вы можете использовать объект-компаньон, который позволит получить доступ к вашему методу с именем класса.

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