1. Java : getClass()
-> kotlin: this.javaClass属性
2.Java: XXX.Class.getDeclaredField("fieldName")
-> Kotlin: XXX::class.java.getDeclaredField("fieldName")
3.Java: XXX.this.setVisibility(View.Visible)
->Kotlin: this@XXX.visibility = View.Visible
4. Kotlin: 可以有如下写法
@get:POST("url") val banner: Observable<BannerModel>
相当于
@POST("url") fun getBanner(): Observable<BannerModel>
5. ButterKnife的OnClick注解对比
Java: @OnClick({R.id.btn_back, R.id.btn_category,R.id.btn_search})
Kotlin: @OnClick(R.id.btn_back, R.id.btn_category, R.id.btn_search ) 省了花括号
6.重写/实现方法的格式对比:
Java:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ButterKnife.bind(this); }
Kotlin:
override fun onCreate( savedInstanceState:Bundle?)
{
super.onCreate(savedInstanceState)
ButterKnife.bind(this)
}
6.匿名对象
Java:
mAdapter.setOnItemClickListener(new BaseAdapter.OnItemClickListener() { @Override public void onItemClick(View view, int position) { Bundle extras = new Bundle(); extras.putString("url", mDataList.get(position).getUrl()); launch(PolicyDetailActivity.class,extras); } });
Kotlin:
mAdapter.setOnItemClickListener(object: BaseAdapter.OnItemClickListener {
override fun onItemClick( view:View, position:Int) {
val extras:Bundle = Bundle()
extras.putString("url", mDataList.get(position).getUrl())
launch(PolicyDetailActivity::class.java,extras)
}
})
7.ButterKnife绑定
Java:
View rootView = super.onCreateView(inflater, container, savedInstanceState); unbinder = ButterKnife.bind(this, rootView);
Kotlin:
val rootView: View? = super.onCreateView(inflater, container, savedInstanceState) unbinder = rootView?.let{ButterKnife.bind(this, it)}!!