栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

kotlin和java哪个好(kotlin语言)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

kotlin和java哪个好(kotlin语言)

前言:原文中先是写定义了一个class类,之后使用了我之前博客中提到的companion object (kotlin中的关键字)把判断网络连接的几个方法做成了类似于java的静态方法即可以使用类名.方法名直接调用。可以直接使用 object 关键 来定义一个类使其变成一个单例类。 而且在方法中使用kotlin的 ?. 和 ?: 来简化程序的写法。

import android.content.Context
import android.net.ConnectivityManager

object NetWorkUtils {

    //判断网络状态,有网络返回true
    fun isConnected(context: Context?): Boolean {
        return isNetworkConnected(context) || isWifiConnected(context)
    }

    //判断手机是否有网络连接
    fun isNetworkConnected(context: Context?): Boolean {
        return context?.let {
            val mConnectivityManager =
                context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
            mConnectivityManager.activeNetworkInfo?.isAvailable
        } ?: false
    }

    //判断wifi网络是否可用
    fun isWifiConnected(context: Context?): Boolean {
        return context?.let {
            val mConnectivityManager =
                context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
            mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)?.isAvailable
        } ?: false
    }
}

kotlin中的?. 和?:是常用得判空的语法糖

 // kotlin
 context?.let{ } 和 ?:
// java
   public final boolean isWifiConnected(@Nullable Context context) {
      boolean var10;
      if (context != null) {
         boolean var3 = false;
         boolean var4 = false;
         int var6 = false;
         Object var10000 = context.getSystemService("connectivity");
         if (var10000 == null) {
            throw new NullPointerException("null cannot be cast to non-null type android.net.ConnectivityManager");
         }

         ConnectivityManager mConnectivityManager = (ConnectivityManager)var10000;
         NetworkInfo var8 = mConnectivityManager.getNetworkInfo(1);
         Boolean var9 = var8 != null ? var8.isAvailable() : null;
         if (var9 != null) {
            var10 = var9;
            return var10;
         }
      }

      var10 = false;
      return var10;
   }

解释:
1、context ?.let{} 相当于 if (context != null) { } 只有?前面的不为空才会去执行let{}里面的代码。
2、?: 相当于java中的三目运算符,从反编译出来的代码即可看出来:

Boolean var9 = var8 != null ? var8.isAvailable() : null;

注:android studio 中的kotlin反编译成java的方法如下图:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/773257.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号