优秀文章搜集X5WebViewNotificationChannel

kotlin学习demo

2019-08-08  本文已影响0人  high一马平川

1. kotlin学习demo

1.1 kotlin参考文档

1.2 kotlin源码

1.3 kotlin博客

1.4 Kotlin的inline内联函数

1.5 Kotlin系列之let、with、run、apply、also函数的使用

补充{

let、with、run、apply、also

var 我:Any



  wo.also{

      fun T.also(block: (T) -> Unit): T { block(this); return this }

      表述 我创建一个方法 然后方法内部调用我 用it  返回我

}



  我.apply{

      fun T.apply(block: T.() -> Unit): T { block(); return this }

      表达 创建一个方法 该方法来自我(持有我的引用)返回我



}



我.let{

  fun <T, R> T.let(block: (T) -> R): R = block(this)

    表述 我创建一个方法 然后方法内部调用我 用it 返回代码最后值

}

  我.run{

    fun <T, R> T.run(block: T.() -> R): R = block()

    创建一个方法 该方法来自我(持有我的引用)返回代码最后值

}

  with(我){

fun <T, R> with(receiver: T, block: T.() -> R): Rreceiver.block()

    表达 创建一个方法 该方法来自我(持有我的引用) 返回代码最后值

}

2. kotlin mvp

3.kotlin学习demo

4.防止过快点击 面向切面

5.面向切面 学习(运行时动态权限申请)

补充:切点表达式:execution (* com.lqr...(..))。



execution(<修饰符模式>? <返回类型模式> <方法名模式>(<参数模式>) <异常模式>?)

//匹配所有的public方法

execution(public * *(..))

//匹配所有以"to"结尾的方法

execution(* *to(..))

//匹配com.lqr包下及其子包中以"to"结尾的方法

//注意-->

// 子包后面是两个点 com.lqr.. 

// 包后面是一个com.lqr.

//*后面必须加空格 * com

execution(* com.lqr..*to(..))

//匹配com.lqr包下所有返回类型是int的方法

execution(int com.lqr.*(..))

//匹配com.lqr包及其子包中的所有方法,当方法抛出异常时,打印"ex = 报错信息"。

@AfterThrowing(value = "execution(* com.lqr..*(..))", throwing = "ex")

@Pointcut("execution(* com.lqr.androidaopdemo.MainActivity.test(..))")

  public void pointcut() {

  }   

  @Before("pointcut()")

  public void before(JoinPoint point) {

      System.out.println("@Before");

  }

  @Around("pointcut()")

  public void around(ProceedingJoinPoint joinPoint) throws Throwable {

      System.out.println("@Around");

  }

  @After("pointcut()")

  public void after(JoinPoint point) {

      System.out.println("@After");

  }

  @AfterReturning("pointcut()")

  public void afterReturning(JoinPoint point, Object returnValue) {

      System.out.println("@AfterReturning");

  }

  @AfterThrowing(value = "pointcut()", throwing = "ex")

  public void afterThrowing(Throwable ex) {

      System.out.println("@afterThrowing");

      System.out.println("ex = " + ex.getMessage());

  }

}

//耗时计算

@Around("pointcut()")

public void around(ProceedingJoinPoint joinPoint) throws Throwable {

  long beginTime = SystemClock.currentThreadTimeMillis();

  joinPoint.proceed();

  long endTime = SystemClock.currentThreadTimeMillis();

  long dx = endTime - beginTime;

  System.out.println("耗时:" + dx + "ms");

}


6.RxBinding系列

上一篇下一篇

猜你喜欢

热点阅读