Kotlin中国 为您找到相关结果 111

Android 出现java.lang.NoClassDefFoundError错误的一种解决方案

前几天,在重构一个Android项目的时候,加入了RXJava,RxAndroid,Retrofit来支持响应式开发,并重构代码,重构一切顺利但是在运行中却出现了Java.lang.NoClassDefFoundError这个错误,并且在几台测试机器上表现出的类名还不一样,例如在Mi4手机上跑出了Handler未找到,在华为上丢失OkHttpUtils类,这就非常费解了,翻遍google都没找到问题所在,但是在另一台三星测试机器上就不会出现各种问题,最后发现是MultiDex出了问题。 在重构中,添加了一些第三方类库,使得整个Android程序的方法数超出了65535,这个时候打包时应该出现下面这个错误 java.lang.IllegalArgumentException: method I...阅读全文

博文 2017-07-30 21:02:46 zhaozw111

使用Gson解析Json

使用Gson解析Json Overview 在日常的开发中,我们经常得需要解析Json数据,烦不胜烦,还好有 Gson 这一开源类库来帮助我们处理这些繁琐的工作。大体上Json的数据格式大概可以分为以下几种: Json数据是一个对象 Json数据是一个对象数组 Json数据是一个对象,但是对象中嵌套着其他的对象或者数组 PS: 本文代码通过Kotlin语言描述。 解析简单对象 这是一个Student类的Json数据,接下来我们要通过Gson解析它。 { "s_num":"s00001", "age":18, "gender":"M", "name":"LD" } 要想使用Gson解释Json数据,首先得有已有与Json数据相对应的实体类。 data class Student(@Serial...阅读全文

博文 2018-08-31 09:00:02 slyfox

Android 拦截返回键

KeyEvent类 Android.View.KeyEvent类中定义了一系列的常量和方法,用来描述android中的按键事件。 和返回键有关的常量和方法有。 KeyEvent.KEYCODE_BACK: 表示key类型为返回键 KeyEvent.ACTION_DOWN:表示事件为按下key,如果一直按住不放,则会不停产生此事件。 KeyEvent.ACTION_UP:表示事件为为放开key,一次点击key过程只会调用一次。 public final int getKeyCode():获取此事件对应的key类型。 public final int getAction():获取此事件对应的事件类型 Activity中拦截返回键 在Activity的派生类中可以通过重写onKeyDown和onK...阅读全文

博文 2017-07-03 17:02:59 zb1489663929046

深入解读 Java 9 新特性

导读:经过三年的开发,Java 9 终于在 9 月 21 日发布了,我们一起来看一看 Java 9 中的新特性。另外,大家可能非常关心,Java 语言如何在云计算、大数据等浪潮中快速创新、保持竞争力,本文也介绍一下 Oracle 建议的时间驱动的新发布模式。杨晓峰,OpenJDK Committer (JDK 9 和 JDK 10 项目),2011 年加入 Oracle 北京研发中心 Java 团队,目前领导 Java 核心类库北京团队,领导或参与了 Java 9,8 和 7 的核心类库等模块的新特性测试和开发工作。个人技术兴趣广泛,主要专注于 Java 等编程语言的发展,尤其是在云计算等前沿领域的应用和演进。很高兴能有机会通过高可用架构社区和大家交流 Java 9 的主要新特性,由于内容较...阅读全文

博文 2017-10-27 09:43:48 杨晓峰

Kotlin使用parcelable出现:BadParcelableException: Parcelable protocol requires a Parcelable.Creator...

在Kotlin编写代码过程中,需要用到parcelable来进行传值,按照以前的写法,进行序列化: class PayTypeInfo : Parcelable{ var payMethodId: String? = null//支付方式ID var payMethodName: String? = null//支付方式名称 override fun writeToParcel(dest: Parcel, flags: Int) { dest.writeString(payMethodId) dest.writeString(payMethodName) } override fun describeContents(): Int { return 0 } companion object ...阅读全文

博文 2017-07-14 18:03:52 小和尚恋红尘

ObjectBox 笔记

EventBus 和 GreenDao 的老东家 GreenRobot 推出的移动端数据库架构。 优点: 速度快,号称比目前主流数据库架构快 5-15 倍 NoSql,没有 rows、columns、SQL,是完全面向对象的 API 数据库升级做到完全自动 缺点是目前仍没有发布正式版本,目前版本号为 V.0.9.13(beta),不过感觉也快了,最新版本甚至增加了 Kotlin 的支持。 简单使用 依赖 根目录下 build.gradle : buildscript { repositories { jcenter() maven { url "http://objectbox.net/beta-repo/" } } dependencies { classpath 'com.android...阅读全文

博文 2017-07-20 19:03:50 chauOne

Android Architecture Componets

2017 google I/O开发者大会发布了android o,并确认了支持Kotlin。后来看官方网站,发现发布了一个新的App架构:Android Architecture Componets 看了一下官方文档,这个架构组件其实就是将mvvm模式继续细化。架构图: View层:还是acitivty/fragmentViewModel:用来和View和model层交互,与之前的Android databinding不同的是,这次改为使用LiveData来存放和监控数据的变化Repository:通过网络,db或缓存获取数据,并将数据提供给ViewMode,并负责数据的更新和同步。model:获取,更新本地数据,包括缓存和dbRemote Data Source:从网络API获取的数据该组...阅读全文

博文 2017-06-02 15:02:36 YourColor

Spring Boot 套餐——使用 Kotlin 开发 SpringBoot

Spring Boot With Kotlin 当前,Spring 5 中已经支持可以使用 Kotlin 来做开发了,那我们就使用 Kotlin 来做一个简单的 CRUD,学习使用 Kotlin 来开发 SpringBoot 的基本套路。本文主要是一个使用 Kotlin 来编写 SpringBoot 的一个简单 Starter,不牵扯任何底层原理之类的知识,属于教你如何用的 Tutorials。代码:https://github.com/coding-farmer-ming/spring-boot-with-kotlin 下载基础项目 可以从 https://start.spring.io 下载基础的项目,SpringBoot 的版本选择 2.0.0.M1,编程语言选择 Kotlin,然后生...阅读全文

博文 2017-06-11 14:02:13 码农套餐

Kotlin + Spring Boot服务端开发

首发于轻境界 转载请注明作者及出处 Kotlin是什么? 著名IDE厂商JetBrains开发的基于JVM的静态类型编程语言,声称100% interoperable with Java。Kotlin是由工程师设计的,各种细节设计非常切合工程师的需要。语法近似Java和Scala,且已活跃在Android开发领域,被誉为Android平台的Swift。 Kotlin能与Java混合使用,并且直接复用Java的生态系统(库、框架、工具)。一个已有的Java项目,只需引用Kotlin的Maven/Gradle插件,以及引用Kotlin标准库的依赖,就可以逐渐掺入Kotlin代码。你完全可以当它是a better Java。 Kotlin的学习曲线极其平缓,学习量相当于一个框架。有经验的程序员阅读...阅读全文

博文 2017-05-23 12:00:14 sorra

Android数据库框架-----GreenDao3的相关使用和版本升级更新

GreenDAO是一款非要流行的Android平台上的数据库框架,性能优秀,代码简洁;是一个将对象映射到SQLite数据库中的轻量且快速的ORM解决方案。 GreenDAO 优势 1、一个精简的库 2、性能最大化 3、内存开销最小化 4、易于使用的 APIs 5、对 Android 进行高度优化 首先先添加相关配置文件,依赖库 compile 'org.greenrobot:greendao:3.+' 并在库文件顶部添加: apply plugin: 'org.greenrobot.greendao' 库文件下定义路径 greendao { schemaVersion 1//指定数据库版本号,更新操作会用到; daoPackage 'com.zhangqie.greendao.gen'//自...阅读全文

博文 2017-07-28 17:02:42 切切歆语

个推工程师教你如何用AST语法树对代码“动手脚”

作为程序猿,每天都在写代码,但是有没有想过通过代码对写好的代码”动点手脚”呢?今天就与大家分享——先抛一个问题:如何将图一代码改写为图二? 此题需要把代码中和程序逻辑无关的字符串提取出来,替换为id。比如个推日志输出类,缩短日志描述信息后,输出的日志就随之变短,根据映射表可以恢复真实原始日志。通过何种方案改写?你可能会想通过万能的“正则表达式”匹配替换,但当代码较为复杂时(如下图所示),使用“正则表达法”则会将问题复杂化,难以确保所有代码的完美覆盖并匹配。若通过AST语法树,可以很好地解决此问题。 什么是AST语法树?AST(Abstract syntax tree)即为“抽象语法树”,简称语法树,指代码在计算机内存的一种树状数据结构,便于计算机理解和阅读。 一般只有语言的编译器开发人员或者...阅读全文

博文 2017-06-08 12:02:06 早上好曼曼酱

Kotlin初探(使用kotlin实现一个列表页面)

写在前面的话google大会宣布kotlin成为android官方语言后,很多人都开始尝试接触kotlin,其实早在去年我就了解了一下kotlin,因为作为一个android开发者,突然发现除了java还有另一门语言可以实现android开发,处于好奇肯定会去了解一下的,但由于工作关系,并没有去深入了解,只是大概的看了一下它的语法。最近几天,周围的朋友都在开始讨论kotlin,于是乎又开始来研究kotlin。本文不会涉及到kotlin的相关配置,只是简单的把自己写的一个小demo拿出来说一说。这篇文章主要说什么?我们都知道,一个app最不可缺少的就是列表页面,所以我决定先从实现一个列表页面开始来学习kotlin,这里我使用的是RecyclerView和一个强大的开源库BaseRecycler...阅读全文

博文 2017-05-27 15:06:59 阳光小亮亮

Android开发好学吗? Android开发入门到精通需要多久?

每一位刚入门学习安卓开发的菜鸟都会询问的问题大概就是Android开发难吗或Android开发好不好学?很多人选择Android开发的最出原因是奔着Android开发者的就业市场和薪资的。今天扣丁学堂Android开发视频教程的讲师就为大家说一说Android开发到底难不难的问题。 现在随着android应用技术越来越广,许多从事其他软件开发的人也敏捷转行做了android开发。不管你从事的是什么职业,都应该有正确的学习办法作为引导。 你想入门,必知道android软件应用的开发工具是Java语言,所以在学习android开发之前,首要应该熟练把握Java根本语言和根底类库。其次,还需求学习数据库及网络相关的知识,再所有这些前期预备就绪之后,就能够进入android开发阶段的学习进程了。最终...阅读全文

博文 2017-09-08 12:02:57 彼岸1234567

Android命名规范(重点讲解:包名)

Android程序开发中,使用规范的命名有益于程序的开发和后期阅读。本文主要对Android程序包名的定义做详细介绍,并附带一些简单的命名规则。 一.标识符命名方法 1 .小驼峰命名法,除首单词外,其余所有单词的第一个字母大写。如:allPrice,getAllNames 2.大驼峰命名法,所有单词的第一个字母大写。如:GuideActivity,StudentInfoBean 3.下划线命名法:单词与单词间用下划线做间隔。如:activity_main,select_backGround_color 二.命名规范 (一)包(packages)的命名规范: 采用反域名命名规则,全部使用小写字母。一级包名为com,二级包名lwz(为个人或公司名称,可以简写),三级包名guidecity(根据应...阅读全文

博文 2018-03-03 21:02:36 DanyCoder

《Android构建MVVM》系列(一) 之 MVVM架构快速入门

前言 本文属于《Android构建MVVM》系列开篇,共六个篇章,详见目录树。 该系列文章旨在为Android的开发者入门MVVM架构,掌握其基本开发模式。 辅以讲解Android Architecture Components,使得更好的实现MVVM架构。 目录树 《Android构建MVVM》系列(一) 之 MVVM架构快速入门 前言 分层思想 什么是MVC/MVP? MVVM是什么,与MVC/MVP有何区别? Android Architecture Components(架构组件) 一个MVVM的Demo 结语 《Android构建MVVM》系列(二) 之 架构组件LiveData 《Android构建MVVM》系列(三) 之 架构组件ViewModel 《Android构建MVVM...阅读全文

Kotlin 与 Java 8 的重要新特性以及 Java 9、10 的发展规划

Java 8可谓是自Java 5以来最具革命性的版本了,她在语言、编译器、类库、开发工具以及Java虚拟机等方面都带来了不少新特性。我们来一一回顾一下这些特性。 一、Lambda表达式 Lambda表达式可以说是Java 8最大的卖点,她将函数式编程引入了Java。Lambda允许把函数作为一个方法的参数,或者把代码看成数据。 一个Lambda表达式可以由用逗号分隔的参数列表、–>符号与函数体三部分表示。例如: Arrays.asList( "p", "k", "u","f", "o", "r","k").forEach( e -> System.out.println( e ) ); 为了使现有函数更好的支持Lambda表达式,Java 8引入了函数式接口的概念。函数式接口就是只有一个方法...阅读全文

博文 2017-09-19 13:02:12 东海陈光剑

java代理和kotlin代理

简述:Aspect Oriented Programming面向切片编程aop需求目标:1.在某个项目中你已经写好了一部分代码,现在想要给这一部分代码添加一个新的附加的功能,并且屏蔽原来代码中不想被调用的代码,总结起来就是中间隔离-开闭原则思考一下,为了满足这个要求我们新建一个类用这个类继承原来的接口,我们称这个类为代理类,我们用这个代理类去重写接口的方法,并在方法中调用真实类的方法吃饭接口:public interfaceEat {voideatSomth();}原始的吃早餐类:public classEatBreckfastimplementsEat{staticStringTAG=EatBreckfast.class.getSimpleName();@Overridepublic vo...阅读全文

博文 2017-09-11 10:03:44 忧郁的老王

Kotlin学历之抽象类与接口

简述Kotlin 中的抽象类和接口与 Java 8 类似,同样用到abstract、interface关键字,与java7以及之前最大的不同就是Kotlin的接口是可以有实现的。抽象类抽象类的格式如下:abstract class 抽象类名[(主构造函数)][: 继承父类和实现接口] {……}例:声明一个抽象的Person类,一个主构造函数,一个name属性。abstract class Person(val name : String) { }注意:即使不用 open 关键字修饰,抽象类也是可以被继承的,想想也很容易明白,因为抽象类本来就是用来继承的,所以就可以省略open关键字。接口接口类的格式如下:interface 接口类名[: 继承的接口] {……}例:声明一个接口A,一个接口B,...阅读全文

Android 进阶路线(思维导图)

封面图.png 前言 前面写了文章《Android开发者该如何进阶?》,整理了Android开发中的一些知识点,包括Java基础、Android基础、Android进阶、开源框架和工具类库等几个大的方面。罗列了其中的包含的知识点,文章有点长,覆盖了Android 知识面较广,为了将各个知识点梳理得更清楚和直观,因此将所有知识点整理成了一张思维导图,方便大家查看。 进阶路线图 思维导图如下: Android进阶路线1 由于图片太大,上传之后太模糊了,拆分成几个部分: 1 . Java基础 2 . Android 基础 3 . Android进阶 4 . 开源框架 5 . 工具类库 补充 前面的文章遗漏了一些点,结合评论区的一些建议做一个补充: 1,关于Kotlin 今年的Google IO 大...阅读全文

博文 2017-09-22 01:04:06 依然范特稀西

class 和 interface 的区别

老鸟绕行 一贯的风格,想下手学习新东西,先把基础打牢了;作为一个不懂Java,不懂Android控件的菜鸟,由于Kotlin 学习 过程是直接阅读代码,So,中间异常艰难很多概念问题总感觉吃不透,一路学习一路Google 吧 interface interface 在java语言中就是一个抽象类型,但接口并不是一个抽象类,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。 这一段是不是很熟悉,是不是很简单?事实上也就是非常简单,正如描述: 类是描述对象的属性和方法。而接口却是包含类要实现的方法。 接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。 另外,在Java中,接口类型可用...阅读全文

博文 2017-06-19 16:04:06 hehtao

作为一个C#程序员, 你应该上手Kotlin

Kotlin最近火了, 在Google IO大会 Kotlin宣布Kotlin将会成为Android官方开发语言之后, Kotlin这样一个JVM上的新*(其实从诞生到现在已经有5年历史的)语言. 终于出现在程序员的视野里, 成为一门成熟的热门的语言. 对于大多数C#程序员来讲, 比如像我这样一个多年在.Net平台从事开发工作的程序员来说, 大多数时候往往都是对Java社区和JVM平台上的各种语言包括JAVA本身的发展抱着一种隔岸观火的态度. 我们目睹了早已被我们用烂的Java lamda特性终于在15年千呼万唤始出来. 旁观了Scala的社区的各种爆炸的冲击与最后归于小众. 耳闻了Oracle与Google在Java上的各种大小官司. 虽然追溯源泉 J#和Java本是同一套标准的不一样的实...阅读全文

博文 2017-09-23 11:00:01 Gerryz

Android项目中引用本地aar文件的方法

随着项目越来越多,代码的复用就变得异常重要,这时候就要进行模块化编程,就是把一些通用的组件或者类库做成单独的模块,其他项目直接进行引用就好。针对Android开发最常见的就是Android Library,在Gradle出现之前引用Android Library的方式也很繁琐,但是有了Gradle一切变得非常简单方便。 aar 何为aar?大家都知道jar文件把,如果你有一个Android Library项目,可以很容易的导出jar文件,然后在其他项目中很方便的引用,aar和jar类似,区别就是一个Android Library项目导出的jar文件不能包含资源文件,比如一些drawable文件、xml资源文件之类的,所以这就有很大的限制,在gradle之前我们要引用带资源文件的Android...阅读全文

Android-9 Kotlin之greendao

起因是这样的,公司的项目之前一直是使用sqlite的,不过重构后,就改用realm了(Kontlin对Realm的封装将在后续文章中实现),多OO哦,后来要集成一个Cordova的项目,Cordova中使用了sqlite实现了收藏、下载等功能,而Cordova的sqlite插件不支持二进制流的存储,所以,需要自定义个Cordova插件,进行实现,这时就需要对sqlite进行操作,greendao是一个将对象映射到SQLite数据库中的轻量且快速的ORM解决方案,同时,在2.2之后增加了对sqlcipher的支持,这里我就描述下greendao集成和简单的应用,毕竟我也只是使用了几天: 3.0之前,greendao需要重新建个项目,但是3.0之后,采用注解的方式来定义实体类,通过gradle插...阅读全文

博文 2017-05-27 15:22:17 vslimit

用Kotlin写Android 01 如何入手

简单的吹一下牛逼 Kotlin Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,它也可以被编译成为 JavaScript 源代码。它主要是由俄罗斯圣彼得堡的 JetBrains 开发团队所发展出来的编程语言,其名称来自于圣彼得堡附近的科特林岛。2012 年 1 月,著名期刊《 Dr. Dobb’s Journal 》中 Kotlin 被认定为该月的最佳语言。虽然与 Java 语法并不兼容,但 Kotlin 被设计成可以和 Java 代码相互运作,并可以重复使用如 Java 集合框架等的现有 Java 类库。 在 Google I/O 2017 中,Google 宣布在 Android 上为 Kotlin 提供支持。 所有代码从Hello World 开始 因为官方Andro...阅读全文

博文 2017-05-23 11:43:23 ksws0320403

Kotlin - 一个简单的Demo项目

Java的超集 - kotlin, 真是让我爱不释手了。哈哈,不在项目里用两句,始终感觉哪里不对一样。下面我们写一个简单的示例,希望也能帮到还在学习Kotlin的朋友们。 首先还是创建kotlin项目,下面我们一步一步来: NO.1 建立一个常规的Android项目,然后进行kotlin开发配置。 在菜单栏找到工具选项[Tools] -> Kotlin -> Config Kotlin In Your Project. 然后会出来一个Gradle和Android Gradle的选项,选择Gradle就行了。现在最新的Kotlin版本应该是1.1.1 QQ截图20170413163007.png 根据你的需要,选择为所有模块都加上kotlin支持还是只针对其中的一个模块。按下OK键以后,使用G...阅读全文

博文 2017-05-27 15:13:20 Cosecant

Swift开发者的福音-开发Android,java迁移Kotlin以及Kotlin与Swift对比学习.

前言:北京时间的17日23点,谷歌一年一度的I/O开发者大会召开.就在这第一天,谷歌安卓团队大会上宣布Kotlin成为Android的主力开发语言,其实在之前这个语言就已经支持了安卓平台开发,但是直到今天谷歌开发者大会上才宣布对该语言的全面支持和维护,至此之后代码将更加简洁.最近项目上线,CTO说闲暇之余学习下安卓,无奈重新啃java的语法,这是多么痛的领悟,可是一觉醒来,万物复苏.作为热衷Swift的iOS开发者,看到Kotlin语法是多么的熟悉.23333. 一、Kotlin的迁移. 1、安装一个Kotlin的插件. Ps:使用Android Studio开发安卓.听说Android Studio 3.0 预览版已支持 Kotlin了,就可以跳过这一步了. Android Studio ...阅读全文

博文 2017-05-27 15:02:48 RamboLu

Kotlin学习笔记(二十六)接口与抽象类的区别

/** * 接口与抽象类的区别: * 1.抽象类可以为属性设置值和getter、setter,而接口不可以 * 2.抽象类和接口中都可以有默认的实现方法,但接口中的方法不能有状态, * 即涉及到属性的值需要到实现类中设置 * 3.子类只能继承一个父类,但可以实现多个接口 */ abstract class A { //抽象类 var i = 0 //抽象类的属性可以有值 // fun hello() { //普通的方法默认为final方法,不能被子类重写 // println(i) // } open fun bye() { //添加open关键字的方法可被子类重写 println("Bye Bye") } abstract fun say() //抽象方法一定要被子类重写 } interf...阅读全文

Android进程间通讯——使用Kotlin实现AIDL

导读学习了几天kotlin,想着实践下试试手,于是乎就想起了aidl,好吧,就拿它练练1.服务的两种开启方式2.使用AIDL调用远程服务ps:AndroidStudio还没配置好Kotlin开发环境的童鞋,可以先移步 AndroidStudio使用kotlin入门 Android进程间通讯 进程间通讯,可以理解为两个不同进程间进行数据交互的一个行为,AIDL是android特有的一种调用远程服务方式 一、先复习下服务的两种开启方式 服务的开启方式有两种,一种是直接startService,另一种是bindServeice;两者的区别呢?前者:服务长期后台运行,不可以调用服务里面的方法后者:可以调用服务的方法,但是不能长期后台运行因为我们是需要进行进程间通讯,所有需要使用到服务里面的方法,这里...阅读全文

博文 2017-05-30 17:02:12 _陈小平

【kotlin从入门到深坑】系列目录

Kotlin 【Kotlin从入门到深坑】让你从对kotlin一无所知到「有所思有所得」 本教程是一系列介绍kotlin 的相关语法的教程,后续还有专门讲解kotlin for android 相关的教程。如果内容中出现错误,请留言指正,感谢。 目录 基础类型 语句 返回和跳转(讲解kotlin的返回和跳转) 类和继承 类的覆盖属性和方法以及抽象类 其他 github观看 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('

博文 2017-06-09 21:00:35 guohaiyang1992

Android Architecture Componets

2017 google I/O开发者大会发布了android o,并确认了支持Kotlin。后来看官方网站,发现发布了一个新的App架构:Android Architecture Componets。看了一下官方文档,这个架构组件其实就是将mvvm模式继续细化。架构图: View层:还是acitivty/fragmentViewModel:用来和View和model层交互,与之前的Android databinding不同的是,这次改为使用LiveData来存放和监控数据的变化Repository:通过网络,db或缓存获取数据,并将数据提供给ViewMode,并负责数据的更新和同步。model:获取,更新本地数据,包括缓存和dbRemote Data Source:从网络API获取的数据该组...阅读全文

博文 2017-06-02 14:02:30 YourColor

Kotlin for Android的环境搭建

一、说在前面因为毕业的原因,最近换个工作,这个公司主要做一些数字证书的,所以我平时就不太忙,刚好趁着这段闲下来的时间,学习一下Google爸爸刚刚收的正妃Kotlin,目前现在Android已经有三个官方支持的开发语言,C++、java、Kotlin,这一篇文章主要是说Kotlin在AS中如何搭建环境开发项目。二、什么是Kotlin、Kotlin有什么好处 2017年5月份召开的Google IO 2017 , Google 将 Kotlin 列为 Android 官方开发语言了,Android Studio 3.0 也默认集成了 Kotlin plugin。Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,它也可以被编译成为 JavaScript 源代码。它主要是由俄罗斯圣...阅读全文

博文 2017-06-07 18:02:16 西红柿的眼泪

Kotlin.2 - 类的结构与分类

注:当前文档为Kotlin自学总结,若什么地方含义模糊不清,敬请指教,谢谢:-)。接上篇 Kotlin.1 - 包,数据类型,普通类和接口 目录和关键词: - 类结构 - 类的分类 1. 数据类(data) 及解构声明 - 注重参数,函数自动生成和复制 2. 密封类(sealed) - 文件限制和When分支覆盖 3. 内部类(inner),匿名内部类,嵌套类 - 引用 4. 枚举类(enum) - 当前类对象,常量获取,排序 类的结构 类可以包括: 初始化块 注意: 初始化代码块中可以使用主构造的参数; 构造函数 属性 函数 嵌套类和内部类 对象表达式 对象声明 类的模拟结构如下: [open/abstract] class <类名> [<访问修饰符>] [<注解>] [construct...阅读全文

博文 2017-06-23 11:03:48 SchafferWang

建造者模式(Java与Kotlin版)

前文推送 设计模式 简单工厂模式(Java与Kotlin版) 工厂方法模式(Java与Kotlin版) 抽象工厂模式(Java与Kotlin版) Kotlin基础知识 Kotlin入门第一课:从对比Java开始 Kotlin入门第二课:集合操作 Kotlin入门第三课:数据类型 初次尝试用Kotlin实现Android项目 1. 定义 建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 2. 结构 Product:产品角色; Director:指挥者,利用具体建造者创建产品; AbstractBuilder:抽象建造者,定义抽象的建造方法; ConcreteBuilder:具体建造者,实现建造方法; 3. 代码 3.1 J...阅读全文

博文 2017-07-20 09:00:03 tgyf

Kotlin实现MultiTypeAdapter,RecyclerView显示多类型ViewHolder

目的 由于Recyclerview显示的内容可能为不同类型的数据,对应的布局也不同。为了适应一种或多种都能显示,设计一种模式,能否兼容。 传统做法,在每个Adapter中复写getItemViewType,返回相应的ViewHolder的Type,然后在onCreateViewHolder中对ViewType进行判断,返回相应的ViewHolder。 文章需要解决的问题就是2,只需写相应的ViewHolder而不用去修改Adapter 本文参考文章http://www.jianshu.com/p/c6a44e18badbhttp://blog.csdn.net/maiduoudo/article/details/54619448 效果图 思路 实现支持多类型单ViewHolder的Adapt...阅读全文

博文 2017-07-07 17:03:55 Yet_land

光看这几个语法糖,就值得你试试Kotlin

最近这几天注意到Kotlin.试了一下,把现在的Java项目翻译成Kotlin,感觉很爽.算是浅尝辄止.见笑. 第一:Null Safety 这个语法糖很适合写Android程序. 比如 if (a != null){ return a.b; } else{ return null; } 上面这个很简单,可以直接用一个三元运算符解决.而如果是下面这种情况呢 a.b.c.d java就要写成这种形式 if (a == null){ return null; } if (a.b == null){ return null; } if (a.b.c == null){ return null; } return a.b.c.d 而如果用Kotlin,可以直接 a?.b?.c?.d 有没有一行更比多...阅读全文

博文 2017-05-25 21:00:19 wynwyy

Android HandlerThread 源代码分析

HandlerThread 简单介绍: 我们知道Thread线程是一次性消费品,当Thread线程运行完一个耗时的任务之后,线程就会被自己主动销毁了。假设此时我又有一 个耗时任务须要运行。我们不得不又一次创建线程去运行该耗时任务。然而,这样就存在一个性能问题:多次创建和销毁线程是非常耗 系统资源的。为了解这样的问题。我们能够自己构建一个循环线程Looper Thread。当有耗时任务投放到该循环线程中时。线程运行耗 时任务。运行完之后循环线程处于等待状态,直到下一个新的耗时任务被投放进来。这样一来就避免了多次创建Thread线程导致的 性能问题了。或许你能够自己去构建一个循环线程,但我能够告诉你一个好消息,Aandroid SDK中事实上已经有一个循环线程的框架 了。此时你仅仅须要掌握其怎么...阅读全文

博文 2017-07-02 00:00:37 yutingliuyl

从零开始的Kotlin之类和对象(二)

从零开始系列: 从零开始的Kotlin之类和对象(一) 从零开始的Kotlin之类和对象(二) 属性(Property)和域(Field) Kotlin中声明一个属性可以使用val或var关键字。var表示为可变属性,val表示为只读属性。 class Test { val x = 0; var y = 1.0f } 自定义的 Getter && Setter var name: String get() = name set(value) { "The name is $name" } 编译期常数值 如果属性值载编译期间就能确定,则可以使用const修饰符,将属性标记为编译器常数值,这类属性必须满足以下所有条件: 必须是顶级属性,或者是一个object的成员 值被初始化为String类型,...阅读全文

Java 8 的重要新特性以及 Java 9、10 的发展规划

Java 8 的重要新特性以及 Java 9、10 的发展规划 Java 8可谓是自Java 5以来最具革命性的版本了,她在语言、编译器、类库、开发工具以及Java虚拟机等方面都带来了不少新特性。我们来一一回顾一下这些特性。 一、Lambda表达式 Lambda表达式可以说是Java 8最大的卖点,她将函数式编程引入了Java。Lambda允许把函数作为一个方法的参数,或者把代码看成数据。 一个Lambda表达式可以由用逗号分隔的参数列表、–>符号与函数体三部分表示。例如: Arrays.asList( "p", "k", "u","f", "o", "r","k").forEach( e -> System.out.println( e ) ); 为了使现有函数更好的支持Lambda表达式...阅读全文

博文 2017-09-16 04:03:46 KotlinChina编程社区

Android开发之MVVM新姿势探索

1、同一个世界,同一个轮回 网上有不少关于Android架构的讨论,如MVC, MVP,MVVM。本质上都是一种代码架构思想,并没有明显的孰优孰劣,关键看应用的场景以及实现的细节。或许你跟我一样,写过很多代码,也重构过很多次。项目代码往往起初是混沌状态,再渐至清晰明朗,又随着业务发展及程序员修仙等级的良莠不齐,再次进入隐忍状态。周而复始,bug不断,但也其乐无穷。 本没有架构,说的人多就有了。还记得最初写Android代码的时候,应该没有明确的架构概念。Android的四大组件已经基本规范我们的代码结构。Activity,Fragment负责UI显示和交互。以此为入口,引入一系列的工具类(xxUtil,xxHelper),实体类(xxModel,xxBean,xxEntity)和一些第三方类...阅读全文

博文 2017-09-11 10:02:42 付三

Android 分包 MultiDex 策略总结

1.分包背景 我们在Android开发中,会不断的在App代码里面增加新功能,引入新的类库,如果不加控制的话,那么会碰到编辑器IDE爆出一下错误: Error:Execution failed for task ':ttt:transformClassesWithDexForDebug'. com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0...阅读全文

博文 2017-11-01 00:00:38 renhui

放弃java转战kotlin,我的心路历程

前言 刚开始接触kotlin语言时,其实对于大多数人来说都是反感的,涉及到改变以往的开发习惯(java),习惯很容易,养成却很难改掉。看到网上对kotlin的评论一致的好,我也就硬着头皮看了下官方文档,试着写写代码。于是才有了这篇的文章。这次的kotlin的demo会集成retrofit和Glide 访问网络显示在listView上。 语法糖Kotlin: 如何理解?,!!符号? ?表示空安全,也就是判断某个变量是否为空。!!表示抛出空指针。我们来看看java和Kotlin的空安全和空指针的处理差异: ​ 表示看着好舒服啊。。。有点小激动不? @都有啥用处? 用到内部类和匿名内部类的地方一定很多,再加上支持lambda语法,没有它谁告诉你this和return到底指的是哪一个? 而java的...阅读全文

博文 2017-10-31 16:02:15 HzhiBo

Kotlin学习笔记(二十五)接口与抽象类

interface InputDevice { //输入设备接口 fun input(event: Any) //输入的方法 } interface USBInputDevice: InputDevice //user输入设备接口 interface BLEInputDevice: InputDevice //蓝牙输入设备接口 interface OpticalMouse //光电鼠标接口 abstract class USBMouse(val name: String): USBInputDevice, OpticalMouse { //usb鼠标 override fun input(event: Any) { } override fun toString(): String { re...阅读全文

freeline

中文说明文档:https://github.com/alibaba/freeline/blob/master/README-zh.mdJDK版本为1.8python 版本 2.7以上 3.0以下gradlew initFreeline -PfreelineVersion=0.8.6 初始化指定版本的下载依赖gradlew initFreeline 初始化下载依赖python freeline.py -f 全量编译python freeline.py 增量编译gradle 、xml、删除带 id 的资源、抽象类文件发生改变时需要重新进行全量编译不支持开启 Jack 编译不支持 Kotlin/Groovy/Scal...阅读全文

博文 2017-08-30 19:03:53 皮皮虾我们走_f5df

枚举类

package meijulei /* 枚举类最基本的用法是实现一个类型安全的美剧 枚举常量用逗号分隔,每个枚举常量都是一个对象 */ enum class Color{ RED,BLACK,BLUE,GREEN,WHITE } //---------------每一个枚举都是枚举类的实例,可以被初始化 enum class Color2(val rgb:Int){ RED(0Xff0000), GREEN(0X00ff00), BLUE(0X0000FF) } //默认是从0开始 若需要指定值,可以使用其构造函数 enum class Shape(value:Int){ ovel(100), rectangle(200) } //-----枚举类还支持以声明自己的匿名类及相应的方法,以及覆...阅读全文

博文 2017-09-01 10:04:28 Green_Apple

Kotlin for Android(一)

一、Kotlin是什么近日召开的 Google IO 2017 , Google 将 Kotlin 列为 Android 官方开发语言了,Android Studio 3.0 也默认集成了 Kotlin plugin,那 Kotlin 是什么? KotlinKotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,它也可以被编译成为 JavaScript 源代码。它主要是由俄罗斯圣彼得堡的 JetBrains 开发团队所发展出来的编程语言,其名称来自于圣彼得堡附近的科特林岛。2012 年 1 月,著名期刊《 Dr. Dobb’s Journal 》中 Kotlin 被认定为该月的最佳语言。虽然与 Java 语法并不兼容,但 Kotlin 被设计成可以和 Java 代码相互运作,并可以...阅读全文

博文 2017-06-07 17:02:15 程序亦非猿580230

Kotlin:接口能包含属性和方法实现了

一、接口定义 Kotlin的接口与Java 8类似,即包含抽象方法的声明,也包含实现; 与抽象类不同的是,接口无法保存状态,可以有属性但必须声明或提供访问器实现; 使用关键字interface来定义; //3.使用关键字interface定义接口MyInterface interface MyInterface { fun bar() //1.可以包含方法foo()实现 fun foo() { } } 二、实现接口 一个类或对象可以实现一个或多个接口; //1.Child类实现了MyInterface接口,实现bar()方法 class Child : MyInterface { override fun bar() { // 方法体 } } 三、接口中属性 可以在接口中定义属性,要么是抽象...阅读全文

博文 2017-09-13 02:03:49 1024工场

kotlin阅读笔记(4)-类和继承

主要内容 类声明 构造函数声明 实例化 继承 方法重载 抽象类 一、类声明 使用class关键字声明类,查看其声明格式: : modifiers ("class" | "interface") SimpleName typeParameters? primaryConstructor? (":" annotations delegationSpecifier{","})? typeConstraints (classBody? | enumClassBody) 最简略的类声明至少包括 modifiers class SimpleName,如: class Empty modifiers 包括 classModifier 和_accessModifier_: classModifier: 类属...阅读全文

博文 2017-05-27 15:27:02 黑石礁大魔王

Java & Groovy & Scala & Kotlin - 23.Trait

Overview Trait 中文名为特质。特质是字段和行为的集合,可以拥有抽象成员也可以拥有普通成员。特质可以看做是一种特殊形式的接口,但是特质主要用于实现多重继承。 多重继承虽然便利,但是会带来 Diamond Problem,即 B 和 C 都实现了 A 的某个方法,而 D 继承了 B 和 C 但是没有重写该方法,此时调用 D 持有的该方法到底来自于 B 还是 C。因此过分使用特质会让程序本身难以理解。 Java 篇 Java 诞生时就倡导语法本身应该简单容易学习,所以设计时 Java 就只支持单继承,因此 Java 并不支持特质,不过可以通过内部类实现类似多重继承的功能。 Groovy 篇 创建特质 特质使用关键字 trait 声明,可以拥有普通成员和抽象成员。 例: trait M...阅读全文

博文 2017-09-30 12:03:47 bookislife

2017年11月GitHub上最热门的Java项目出炉

2017年11月GitHub上最热门的Java项目出炉~ 一起来看看这些项目你使用过哪些呢? 1分布式 RPC 服务框架 dubbohttps://github.com/alibaba/dubbo Star 13970 本月上涨1666 ?wx_fmt=jpeg&wxfrom=5&wx_lazy=1 Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring 框架无缝集成。主要核心部件:Remoting: 网络通信框架,实现了 sync-over-async 和 request-response 消息机制RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能Registry: 服务目录框架用于服务的注册和服...阅读全文

博文 2017-12-19 00:00:02 qwangxiao

Kotlin-for-android

Kotlin简介kotlin是基于jvm的静态类型语言。最开始是作为android开发中替代java语言所出现。kotlin 可以说是java的一个扩展基本java有的 kotlin都用。Kotilin 优点代码比较简洁 基于java语言学习曲线平滑 kotlin核心库对比其他语言更轻量级 高交互性(和java的交互能力) studio中使用方便Kotlin 集成首先要开始在的gradel里面配置 app.gradle 然后在项目的gradel里面配置 project.gradel 然后开始下载kotlin插件 要把对应得已经存在的activity换成kotlin可以到code 里面转换 至此已经把Kotlin集成完毕 content 在java中 如果我们需要创建一个data class时...阅读全文

博文 2017-05-27 15:13:52 溢出的幸福