这代码能转成kotlin吗


#1
public class Main {
    public static void main(String[] args) {
        MM.MMM a = new MM().new MMM() {
            @Override
            protected void f() {
                System.out.println("hh");
            }
        };
    }
}


class MM {
    class MMM {
        protected void f() {

        }
    }
}


#2

kotlin自动转换后变成这种了


#3

用by关键字解决了


#4
import MM.MMM

fun main(args: Array<String>) {
   with(MM()) {
      val a: MMM = object : MMM() {
         override fun f() {
            println("hh")
         }
      }
   }
}

internal class MM {
   internal open inner class MMM {
      protected open fun f() {}
   }
}

kotlin的bug有点多(


#5

那个自动转化容易转化成读不懂的样式,所以还是自己写一个比较好:>比如这个

// 这是在同一个文件里的
fun main() {
    val a: MM.MMM = object : MM.MMM() {
        override fun f() {
            print("hh")
        }
    }
}

class MM {
    open class MMM {
        protected open fun f() {}
    }
}

#6

你这个 MMM 是静态内部类了,楼主的MMM是内部类


京ICP备16022265号-2 Kotlin China 2017 - 2018