zoukankan      html  css  js  c++  java
  • Kotlin 学习使用之旅(二)

    为什么从二开始呢?再此之前已经有了一篇了,那是刚知道kotlin的时候草(chao)来(chao)的并且学习一篇,

    这次是自己在项目中正式使用并且遇到的一些问题记录,供kotlin新入门的童鞋参考,避免我的弯路(当然,这里的都是其他地方会有的,因为我也是在边学边记录)

    难点理解:

    1.  !!符号 (不能为空,如果空也会抛异常)

    2. ? 号 (可以为空,如果是空则返回-1)

    解释如下:

     //类型后面加?表示可为空

      var age: String? = "23"

    //抛出空指针异常

    val ages = age!!.toInt()
    //不做处理返回 null
    val ages1 = age?.toInt()
    //age为空返回-1
    val ages2 = age?.toInt() ?: -1
    */
    3.继承,实现
    如果继承的类,那么是 :类名() 如果实现接口是 : 接口类名 即可

    4.在java中构造或者方法中,参数名称,参数数量相同,但是参数类型不同即可根据参数位置的类型调用对应的构造方法,或者方法,但是在kotlin中不行,找了半天网上确实没找到,自己翻译报错,看了半天
    最终搞定了,原话如下:

    错误:(44, 25) None of the following functions can be called with the arguments supplied:
    public constructor DefaultFragmentAdapter(fm: FragmentManager!, titleArray: ArrayList<String!>!, fragmentShow: ((positon: Int) -> Fragment!)!) defined in com.suxuantech.erpsys.ui.adapter.DefaultFragmentAdapter
    public constructor DefaultFragmentAdapter(fm: FragmentManager!, titleArray: ArrayList<String!>!, fragmentShow: DefaultFragmentAdapter.FragmentShow!) defined in com.suxuantech.erpsys.ui.adapter.DefaultFragmentAdapter
    public constructor DefaultFragmentAdapter(fm: FragmentManager!, mCount: Int, fragmentShow: ((positon: Int) -> Fragment!)!) defined in com.suxuantech.erpsys.ui.adapter.DefaultFragmentAdapter
    public constructor DefaultFragmentAdapter(fm: FragmentManager!, mCount: Int, fragmentShow: DefaultFragmentAdapter.FragmentShow!) defined in com.suxuantech.erpsys.ui.adapter.DefaultFragmentAdapter

    翻译:在提供的参数中不能调用下列函数:
    这里主要是因为Kotlin语言问题,因为kotlin不算强类型,也算不上弱类型,他会自己推断传入的对应的强类型,因为你传入的var类型不明确,所以你需要使用你想用的哪个方法对应的类型进行转换即可, 或者 as 当然as 必须是有继承类型的,不同类型的,会转换失败

    5.匿名接口实现:
    viewPager!!.addOnPageChangeListener(object : OnPageChangeListener{
    override fun onPageScrollStateChanged(state: Int) {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
    }

    override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
    }

    override fun onPageSelected(position: Int) {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
    }
    })
    6. 关于重写:重写之后默认会有todo ,java没问题,但是kolin 要求你一定要写一些东西,如果不写你可以把todo删除即可
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
    7.拉姆达:挺坑爹的
    接口只有一个方法且参数只有一个的:

    
    
    
    
    


  • 相关阅读:
    鼠标移入移出事件改变图片的分辨率
    Qt 5.2.0 和 VS 2012集成
    java int and string convert
    判断密码强度
    MySQL 警告WARN: Establishing SSL connection without server's identity verification is not recommended.解决办法
    java中byte转换int时为何与0xff进行与运算
    java排序练习
    小数的取舍
    控制台输入一个数组,然后倒序输出
    非托管资源的释放
  • 原文地址:https://www.cnblogs.com/lizhanqi/p/8526976.html
Copyright © 2011-2022 走看看