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初学者略增加了学习成本。

发布了141 篇原创文章 · 获赞 40 · 访问量 17万+

猜你喜欢

转载自blog.csdn.net/qq_20330595/article/details/104236877