原始接口代码:
public @interface ActivityScoped {
}
Kotlin接口代码:
annotation class ActivityScoped
原始实现方法:
@Override
void inject(DaggerApplication instance);
AppComponent.Builder application(Application application);
Kotlin实现方法:
override fun inject(instance: DaggerApplication)
fun application(application: Application): AppComponent.Builder
1.实力化类用:冒号连接类
2.void换成fun
原始定义控件:
ImageView mPlayingUserAvatar;
Kotlin定义控件:
internal var mPlayingUserAvatar: ImageView? = null
1.internal表示定义域
2.所有变量都需要加var
3.实力化类变量:类
4.?问号表示是否为空
原始代码定义静态:
private static final int CACHE_STRATEGY_FAST = 1;
Kotlin定义静态:
companion object {
var mHandler: Handler? = null
private val CACHE_STRATEGY_FAST = 1 //极速
private val CACHE_STRATEGY_SMOOTH = 2 //流畅
private val CACHE_STRATEGY_AUTO = 3 //自动
private val CACHE_TIME_FAST = 1.0f
private val CACHE_TIME_SMOOTH = 5.0f
}
1.静态static标识的都加到companion object 进行单例
2.定义变量类型的都用var换掉
原始实力化方法:
private Map mUrlMap = new HashMap<>();
Kotlin实力化方法:
private val mUrlMap = HashMap()
1.直接变量等于个要实力化的
原始初始化变量:
private int mCacheStrategy;
private String mPlayUrl;
Kotlin初始化变量:
private var mCacheStrategy: Int = 0
private var mPlayUrl: String? = null
1.前面要加var
2.字符串string类型的需要加?好判断是否为空然后赋值null
原始写一个有返回值的方法:
public int getDeviceId() {
return mEntity.getId();
}
Kotlin写一个有返回值的方法:
val deviceId: Int
get() = mEntity!!.id
1.val来表示新建的。无论是变量还是方法都需要加
2.get类型的方法把get去掉第一个字母小写后当作方法名给个方法名称后冒号跟返回值类型
3.get()=后面加上要返回的数据
4.如果需要在get()里面加逻辑处理,需要get(){在这里面加然后值用return 返回出来}
5.写方法时候public void 可以用fun替换掉
6.所有类型值赋值时候都可以用var定义它
7.!!表示第一次加载可以为空,实例化的类后面调用里面的方法时候都需要加!!.
原始switch使用多条件判断
switch (action) {
case AppConstant.UP:
mGamePresenter.up();
break;
case AppConstant.DOWN:
mGamePresenter.down();
break;
}
Kotlin用when替代它:
when (action) {
AppConstant.UP -> mGamePresenter!!.up()
AppConstant.DOWN -> mGamePresenter!!.down()
}
1.!!表示第一次加载可以为空,实例化的类后面调用里面的方法时候都需要加!!.
综合方法对比 原始:
public void onFinish() {
CountDownTimer timer = mTimerMap.get(action);
if (timer != null) {
timer.cancel();
}
}
Kotlin:
fun onFinish() {
val timer = mTimerMap[action]
timer?.cancel()
}
1.public void 可以用fun替换
2.当需要赋值时候用var可以直接根据后面赋值类型转换成对应的,所以所有赋值的变量都可以用var来定义
3.?问号符号对应着的意思是判断timer是否为空
4.get方法可以变成中括号代替和数组一样
原始需要强转对象赋值代码:
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
Kotlin需要强转对象赋值代码:
val am = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
1.强转改成在后面加上as 后面加上要强转的类型
原始开启线程:
new Thread(new Runnable() {
@Override
public void run() {
while (showDanmaku) {
int time = new Random().nextInt(300);
try {
Thread.sleep(time);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
Kotlin开启线程:
Thread(Runnable {
while (showDanmaku) {
val time = Random().nextInt(300)
try {
Thread.sleep(time.toLong())
} catch (e: InterruptedException) {
e.printStackTrace()
}
}
}).start()
1.不需要实例化new
2.不需要实现run()方法
后续是flutter基本教学