kotlin内部类无法访问私有方法吗?

时间:2017-08-17 13:44:36

标签: java android kotlin

您好我是kotlin的新手,并试图从内部匿名类中调用私有函数。

以下是电话:

      object callback : Callback<ResponseBody> {
        override fun onResponse(call: Call<ResponseBody>?, response: Response<ResponseBody>?) {

            Log.d("jjj", " response is " + response.toString())
            displaySuccess()

        }

        override fun onFailure(call: Call<ResponseBody>?, t: Throwable?) {
        }

    }



      private fun displaySuccess(){
        Toast.makeText(activity,"succesful", Toast.LENGTH_LONG)
    }

这两段代码都驻留在Fragment类上,而displaySuccess不能在onResponse中访问吗?

2 个答案:

答案 0 :(得分:4)

使用object你正在创建一个单例,它不知道如何访问外面的类。您应该将其定义为类并实例化它。

答案 1 :(得分:2)

你必须声明这样的对象:

val callback = object: Callback<ResponseBody> {
    override fun onResponse(call: Call<ResponseBody>?, response: Response<ResponseBody>?) {
        //implementation
    }
    override fun onFailure(call: Call<ResponseBody>?, t: Throwable?) {
        //implementation
    }
}

您使用的是object declaration。要创建匿名类的对象,您必须使用object expression。他们的语法略有不同。