Kotlin Java 代码对照

Java

public final void onCheckedChanged(RadioGroup radioGroup, int i) {
	Intrinsics.checkExpressionValueIsNotNull(radioGroup, "group");
	View findViewById = radioGroup.findViewById(i);
	if (findViewById != null) {
	    int indexOfChild = radioGroup.indexOfChild((RadioButton) findViewById);
	    FragmentTransaction beginTransaction = getSupportFragmentManager().beginTransaction();
	    Intrinsics.checkExpressionValueIsNotNull(beginTransaction, "supportFragmentManager.beginTransaction()");
	    String str = getClass().getSimpleName() + '_' + indexOfChild;
	    Fragment findFragmentByTag = getSupportFragmentManager().findFragmentByTag(str);
	    if (findFragmentByTag == null) {
	        findFragmentByTag = SubjectDetailFragment.Companion.newInstance();
	        beginTransaction.add(R.id.subjectsContainer, findFragmentByTag, str);
	    }
	    FragmentManager supportFragmentManager = getSupportFragmentManager();
	    Intrinsics.checkExpressionValueIsNotNull(supportFragmentManager, "supportFragmentManager");
	    List<Fragment> fragments = supportFragmentManager.getFragments();
	    Intrinsics.checkExpressionValueIsNotNull(fragments, "supportFragmentManager.fragments");
	    for (Fragment fragment : fragments) {
	        Intrinsics.checkExpressionValueIsNotNull(fragment, "it");
	        if (Intrinsics.areEqual((Object) str, (Object) fragment.getTag())) {
	            beginTransaction.show(findFragmentByTag);
	        } else {
	            beginTransaction.hide(findFragmentByTag);
	        }
	    }
	    beginTransaction.commitAllowingStateLoss();
	    return;
	} 
	 throw new TypeCastException("null cannot be cast to non-null type android.widget.RadioButton");
}

Kotlin


binding.subjects.setOnCheckedChangeListener { radioGroup, checkedId ->
    val indexOfChild =
        radioGroup.indexOfChild(radioGroup.findViewById(checkedId) as RadioButton)
    val beginTransaction = supportFragmentManager.beginTransaction()
    val tag = this@SubjectsActivity.javaClass.simpleName + '_' + indexOfChild
    var findFragmentByTag = supportFragmentManager.findFragmentByTag(tag)
    if (findFragmentByTag == null) {
        findFragmentByTag = SubjectDetailFragment.newInstance()
        beginTransaction.add(R.id.subjectsContainer, findFragmentByTag, tag)
    }
    val fragments = supportFragmentManager.fragments
    for (fragment in fragments) {
        if (tag == fragment.tag) beginTransaction.show(findFragmentByTag)
        else beginTransaction.hide(findFragmentByTag)
    }
    beginTransaction.commitAllowingStateLoss()
}

可以发现Kotlin做了大量的非空判断,无疑在精简代码的同时保证了程序的健壮性

Intrinsics.checkExpressionValueIsNotNull

当然这在反编译阅读源码是也降低了程序的可读性,对于Java初学者略增加了学习成本。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值