- 博客(69)
- 资源 (14)
- 收藏
- 关注
转载 教你如何攻克Kotlin中泛型型变的难点(上篇)
简述: Kotlin中泛型相关的文章也几乎接近尾声,但到后面也是泛型的难点和重点。相信有很多初学者对Kotlin中的泛型型变都是一知半解,比如我刚开始接触就是一脸懵逼,概念太多了,而且每个概念和后面都是相关的,只要前面有一个地方未理解后面的难点更是越来越看不懂。Kotlin的泛型比Java中的泛型多了一些新的概念,比如子类型化关系、逆变、协变、星投影的。个人认为学好Kotlin的泛型主要有这么几个...
2019-04-21 05:12:49 398
转载 Kotlin的独门秘籍Reified实化类型参数(下篇)
简述: 今天我们开始接着原创系列文章,首先说下为什么不把这篇作为翻译篇呢?我看了下作者的原文,里面讲到的,这篇博客都会有所涉及。这篇文章将会带你全部弄懂Kotlin泛型中的reified实化类型参数,包括它的基本使用、源码原理、以及使用场景。有了上篇文章的介绍,相信大家对kotlin的reified实化类型参数有了一定认识和了解。那么这篇文章将会更加完整地梳理Kotlin的reified实化类型参...
2019-04-21 05:12:40 428
转载 Kotlin的独门秘籍Reified实化类型参数(上篇)
翻译说明:原标题: Getting Real with Kotlin's Reified Type Parameters原文地址:typealias.com/guides/gett…原文作者:Dave Leeds历史背景:我们都知道Java中的泛型是在JDK1.5的版本引入的,可是集合Collection在JDK1.2版本中就引入的,我们现在所看到的List<T>...
2019-04-21 05:12:19 604
转载 有关Kotlin属性代理你需要知道的一切
简述: 今天继续Kotlin原创系列的第十一讲,一起来揭开Kotlin属性代理的漂亮外衣。属性代理可以说是Kotlin独有的强大的功能之一,特别是对于框架开发的小伙伴来说非常有用,因为会经常涉及到更改存储和修改属性的方式操作,例如Kotlin中的SQL框架Exposed源码就大量使用了属性代理。相信你已经在代码也使用了诸如Delegates.observable()、Delegates.notNu...
2019-04-20 17:15:36 505
转载 浅谈Kotlin中集合和函数式API完全解析-上篇(八)
简述: 今天带来的是Kotlin浅谈系列的第八讲,这讲我们一起来聊聊Kotlin这门语言对函数式编程的支持。我们都知道在kotlin这门语言中函数荣升成为了一等公民,所以在支持函数式编程的方面,Kotlin这门语言也是非常给力的,并且在Kotlin中语法也尽量推荐接近函数式编程的风格。学过以及了解过函数式编程的小伙伴都知道函数式编程最吸引人的地方,莫过于它拥有丰富的函数式操作符,可以使用一种全新的...
2019-04-20 17:07:08 469
转载 浅谈Kotlin语法篇之lambda编译成字节码过程完全解析(七)
简述: 今天带来的是Kotlin浅谈系列第七弹,上篇博客我们聊到关于Kotlin中的lambda表达式的一些语法规则和基本使用。然而我们并没有聊到Kotlin的lambda表达式的本质是什么?我们都知道使用Kotlin来开发Android,最终都会编译成字节码文件.class,然后字节码文件run到JVM上,最后整个应用跑起来。1、为什么需要去对lambda表达式字节码分析?(why) 2、...
2019-04-20 12:18:47 428 1
转载 浅谈Kotlin语法篇之Lambda表达式完全解析(六)
简述: 今天带来的Kotlin浅谈系列的第六弹, 一起来聊下Kotlin中的lambda表达式。lambda表达式应该都不陌生,在Java8中引入的一个很重要的特性,将开发者从原来繁琐的语法中解放出来,可是很遗憾的是只有Java8版本才能使用。而Kotlin则弥补了这一问题,Kotlin中的lambda表达式与Java混合编程可以支持Java8以下的版本。那我们带着以下几个问题一起来看下Kotli...
2019-04-20 12:10:22 246
转载 浅谈Kotlin语法篇之扩展函数(五)
简述: 今天带来的是Kotlin浅谈系列的第五弹,这讲主要是讲利用Kotlin中的扩展函数特性让我们的代码变得更加简单和整洁。扩展函数是Kotlin语言中独有的新特性,利用它可以减少很多的样板代码,大大提高开发的效率;此外扩展函数的使用也是非常简单的。我会从以下几个方面阐述Kotlin中的扩展函数。1、为什么要使用Kotlin中的扩展函数? 2、怎么去使用扩展函数和扩展属性? 3、什么是扩...
2019-04-20 12:03:12 296
转载 浅谈Kotlin语法篇之顶层函数、中缀调用、解构声明(四)
简述: 今天带来的是Kotlin浅谈系列的第四弹,这次主要聊下Kotlin独有的新特性,Java不具备的。Kotlin是一种增加许多新功能的语言,允许编写更简洁易读的代码,这使得我们的代码更易于维护。例如使用顶层函数和属性从此消除Java中的static、中缀表达式调用和解构声明等。1、为什么要用顶层函数替代Java中的static函数 2、顶层函数和属性的基本使用 3、顶层函数实质原理...
2019-04-20 11:59:06 245
转载 浅谈Kotlin语法篇之如何让函数更好地调用(三)
简述: 今天带来的是Kotlin浅谈系列第三弹,这讲来聊下函数调用和函数重载问题,看到标题就知道Kotlin在函数调用方面有优于Java的地方。先抛出以下几个坑(估计曾经的你踩过...),看我们怎么去一步步填坑,从中你会体验Kotlin这门语言魅力。1、Java在函数调用方面存在怎样的坑? 2、Kotlin是怎样去解决函数调用的坑? 3、Java在函数重载方面存在怎样的坑? 4、Kotl...
2019-04-20 11:50:08 237
转载 浅谈Kotlin语法篇之变量和常量(二)
这次所说的是Kotlin的变量和常量,主要会对以下内容做介绍:1、变量基本定义 2、var和val的区别 3、智能类型推断 4、自定义属性访问器 5、var是可变的而val一定是不可变的吗一、Kotlin与Java中变量和常量 使用对比1、在Java中定义一个变量和常量public String name = "Mikyou";//定义变量public final int ...
2019-04-20 11:41:12 182
转载 浅谈Kotlin语法篇之基础语法(一)
Kotlin的基本语法的介绍,先从整体上体会kotlin的编程风格。一、包的声明在Kotlin中定义包与Java有点不同,在Kotlin中目录与包结构无需匹配,Kotlin的源码可以在磁盘上的任意位置。1、包的声明源文件的通常是以包的声明的开头和Java一样。package com.mikyou.hellokotlin/** * Created by mikyou...
2019-04-20 11:20:32 135
转载 Java中Lambda表达式的使用
简介(译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能。本人建议不要乱用,因为这就和某些很高级的黑客写的代码一样,简洁,难懂,难以调试,维护人员想骂娘.)Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一...
2019-04-20 11:09:56 88
翻译 Kotlin中内联类(inline class)完全解析
翻译说明:原标题: An Introduction to Inline Classes in Kotlin原文地址:typealias.com/guides/intr…原文作者:Dave Leeds无论你是编写执行在云端的大规模数据流程程序还是低功耗手机运行的应用程序,大多数的开发者都希望他们的代码能够快速运行。现在,Kotlin的最新实验性的特性内联类允许创建我们想要的数据类...
2019-04-19 07:04:56 903 1
翻译 Kotlin中关于Companion Object的那些事
翻译说明:原标题: A few facts about Companion objects原文地址:https://blog.kotlin-academy.com/a-few-facts-about-companion-objects-37e18429b725](https://blog.kotlin-academy.com/a-few-facts-about-companion-obj...
2019-04-19 06:54:53 5459
翻译 掌握Kotlin中的标准库函数: run、with、let、also和apply
翻译说明:原标题: Mastering Kotlin standard functions: run, with, let, also and apply原文地址:https://medium.com/@elye.project/mastering-kotlin-standard-functions-run-with-let-also-and-apply-9cd334b0ef84原文...
2019-04-19 06:51:58 209
转载 Navigation 详解三
配合 Toolbar在 BottomNavigationActivity 中添加 Toolbar,修改主题为 NoActionBar 的。override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activi...
2019-04-19 06:46:18 547
转载 Navigation 详解二
配合 BottomNavigationView创建 Bottom Navigation ActivityBottomNavigationView 以更简洁的方式来实现过去的 BottomNavigationBar 的样式。Android Studio 中创建一个 Bottom Navigation Activity,自动生成 Activity。class BottomNavigati...
2019-04-19 06:44:41 784
转载 Navigation 详解一
Navigation 是 JetPack 中的一个组件,用于方便的实现页面的导航,所以抽象出了一个 destination 的概念,大部分情况一个 destination 就表示一个 Fragment,但是它同样可以指代 Activity、其它的导航图。最初要有个起始页面,叫 start destination,处于栈底,是启动时的第一个页面,当然也是返回可见的最后一个页面。多个 destin...
2019-04-19 06:43:07 750
转载 Java 泛型进阶
擦除在泛型代码内部,无法获得任何有关泛型参数类型的信息。例子1://这个例子表明编译过程中并没有根据参数生成新的类型public class Main2 { public static void main(String[] args) { Class c1 = new ArrayList<Integer>().getClass(); ...
2019-04-19 06:39:12 89
转载 三句话总结JAVA泛型通配符(PECS)
在JAVA的泛型集合中,默认都可以添加null,除此以外,还有以下三条规则。1. “?”不能添加元素以“?”声明的集合,不能往此集合中添加元素,所以它只能作为生产者(亦即它只能被迭代),如下:List<?> names = Lists.newArrayList("yiifaa");// 通配符声明的集合,获取的元素都是Object类型List<Object>...
2019-04-13 10:55:27 127
转载 深入理解 Java 泛型
为什么需要泛型?先来看一段代码,这段代码是用来计算两个数之和,可以看到每次新增一种数据类型,那么就要新增一个方法,这显然是不好的解决方法。public class NoGeneric { public int addInt(int a, int b) { return a + b; } public double addDouble(...
2019-04-13 10:53:32 204
转载 You must not call setTag() on a view Glide is targeting的解决方案
概述在使用Glide加载图片时,如果出现“You must not call setTag() on a view Glide is targeting”的错误,八成是在使用ListView的时候出现的。简单来说就是原本想简化布局文件的代码,但是很不幸,这样做却会造成错误。解决方案1如果出错了,你的item八成是这个样子:<?xml version="1.0" encoding=...
2019-04-13 10:30:29 848
转载 项目从studio2.0.0升级到studio3.1.2遇到的坑
问题一 : Error:All flavors must now belong to a named flavor dimension. Learn more我是在项目的build.gradle中使用了productFlavors,结果编译时报了如下错误:提示:Error:All flavors must now belong to a named flavor dimension.Lea...
2019-04-13 10:26:49 571
转载 解决:ButterKnife在gradle 3.0以后用不了的情况
今天看着项目,想着使用黄油刀省点事儿,配置好黄油刀之后,悠哉的点击了一下运行,突然报了一个异常,如下:Error:java.lang.RuntimeException: Annotation processors must be explicitly declared now. The following dependencies on the compile classpath a...
2019-04-13 10:22:50 533
转载 线程执行顺序错误
今天在写博客的时候,想弄个例子说明一下非原子操作的线程安全问题,下面就是这个例子public class Main { public static void main(String[] args) { Counter counter = new Counter(); // 开启1000条线程让counter的count++,理想结果应该是1000 ...
2019-04-13 10:20:05 254
转载 Synchronized与ReentrantLock区别总结
相似点:这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一个线程获得了对象锁,进入了同步块,其他访问该同步块的线程都必须阻塞在同步块外面等待,而进行线程阻塞和唤醒的代价是比较高的(操作系统需要在用户态与内核态之间来回切换,代价很高,不过可以通过对锁优化进行改善)。功能区别:这两种方式最大区别就是对于Synchronized来说,它是java语言的关键...
2019-04-13 10:15:25 586
转载 Android消息机制和其应用
本文主要讲的是Android消息机制的Java层,Android消息机制对Android开发者来说是一个基础知识,网络上介绍Android消息机制的文章很多,为了本文不显得多余,我争取从不同的角度来做一个解析,包括一些基础和源码分析。我们知道Android的消息机制主要指Handler、MessageQueue和Looper的运作机制、要想完全搞清楚Android的消息机制势必要先理解Bind...
2019-04-13 10:11:12 147
转载 android retrofit2 如何多文件上传
1、build.gradle中添加依赖compile 'com.squareup.okhttp3:okhttp:3.4.1'compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'compile 'com.google.code.gson:gson:2.5'compile 'com.squareup.retrofit2:retrof...
2019-04-13 09:53:37 1884
安卓 OpenGL ES 2.0 完全入门(一):基本概念和 hello world.docx
2019-08-25
OkHttp使用教程
2015-12-18
IDirectDraw7的使用
2014-10-14
DirectDraw7编程基础
2014-10-14
MTK短信编码.docx
2012-12-06
刷机原理04 Android系统Recovery模式的工作原理.wps
2012-10-24
刷机原理03 Android系统的三种启动模式.wps
2012-10-24
刷机原理02 Android升级包update.zip的生成过程分析.wps
2012-10-24
刷机原理01 update.zip包目录结构
2012-10-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人