【问题标题】:Android conversion to Kotlin. How to call inner method in constructor superAndroid 转换为 Kotlin。如何在构造函数super中调用内部方法
【发布时间】:2019-07-11 15:00:01
【问题描述】:

这是我的方法:

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 是一个未解决的引用? 如何让构造函数识别它?

【问题讨论】:

  • 你可以把getErrorMessageSuffix放在the companion object {}里面
  • 是的,谢谢!!!就是这样。现在可以了。如果您对此做出回答,我将接受它作为正确的答案。抱歉,对 kotlin 来说还是新手,所以有时会让人感到困惑

标签: android class kotlin constructor super


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您可以在此处使用伴生对象,这将使您能够使用类名访问您的方法。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-17
      • 2012-05-17
      • 2011-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-15
      相关资源
      最近更新 更多