zoukankan      html  css  js  c++  java
  • Java调用Kotlin事项及Kotlin反射初步

    继续来研究Java调用Kotlin的一些东东。

    @Throws注解:

    我们知道在Kotlin中是不存在checked exception的,而在Java中是存在的,那。。如果从Java来调用Kotlin的角度那又是如何做到兼容的呢?下面写一个Kotlin代码:

    接下来再用Java来调用此方法:

    接下来运行一下:

    那。。貌似有点不合理呀,很明显这个方法是一定会抛异常的,那我们主动的try...catch..一下:

     

    看一下异常提示:

    其实在Kotlin中可以用@Throws注解来对确定要抛异常的(checked exception)方法进行说明,这样在Java调用时则就可以变成了一个检查异常了,如下:

    好,此时如果我们在Java直接调用就会提示需要捕获异常提示了,如下:

    此时就符合Java的习惯了,因为FileNotFoundException就是checked exception嘛,所以捕获一下:

    空参数:

    我们知道,在Kotlin中对于null的处理是非常严格的,如果一个方法参数是一个String不为空的就必须传非空的,而如果是一个String?可为空的那就可以传空,但是!!!在Java中很明显木有这个要求嘛,所以下面用程序来说明这个问题:

    好,接下来在Java中来调用一下它:

    关键的来了:

    很明显当传null时,method()方法体都木有执行到,直接抛异常了,注意这个异常不是空指针异常,是参数不合法异常,那如果修改一下method()方法:

     

    再运行:

    Kotlin反射初步:

    接下来则来学习一下Kotlin的反射,我们知道在Java中反射的根源是Class,而在Kotlin中的反射根源是KClass,下面先来看一下Kotlin的系统包:

     

    那为啥不像Java那样都集成到rt.jar中呢?其实是由于在早期Kotlin并非内置到Android当中,而在Android中对于性能是比较讲究的,而不像服务器配置比较大可以忽略这么小的一个jar包大小,所以将反射单独弄出来就让在Android写代码根据实际需要来依赖该反射包,如果没用到那就可以不引用了。

    好,下面来看下代码:

    其实它是KClass的实例,那如果要获取它对应Java的Class对象呢?如下:

    可以看一下它的细节:

    先这么简单入个门吧,之后再对反射不断深入。。

  • 相关阅读:
    如何用jquery实现实时监控浏览器宽度
    关于oracle with as用法
    SQL查询语句,怎样查询重复数据
    Axure RP Pro7.0的key注册码加汉化非破解
    秦曾昌人工智能课程---7、决策树集成学习Tree Ensembles
    秒懂机器学习---分类回归树CART
    秒懂机器学习---朴素贝叶斯
    秒懂机器学习---k临近算法(KNN)
    秒懂机器学习---机器学习无法逃避的梯度下降法
    秒懂机器学习---当机器学习遇上决策树....
  • 原文地址:https://www.cnblogs.com/webor2006/p/11571472.html
Copyright © 2011-2022 走看看