让你的代码量减少3倍!使用kotlin开发Android(三) 缩短五倍的Java Bean

原创 2016年10月19日 23:43:32

回顾一下

哈,没想到你已经坚持不懈看到第三篇了,不错哈~坚持就是胜利。
本文同步自博主的私人博客wing的地方酒馆

上一篇文章中,我们介绍了扩展函数,这里对上一篇进行一点小小的补充。

还记得textview是如何setText()的吗

textView.text = "hello kotlin"

不知道你有没有想过,这个.text是如何实现的呢。 哈哈,其实你们大概已经猜到了。就是通过扩展函数实现的

public  var TextView.text:  CharSequence        
  get() =   getText()           
  set(v)    =   setText(v)

开始今天的内容

今天介绍的是一种叫做数据类的类,他没有什么功能,只负责储存数据,也就是我们常说的Java Bean,通常,在Java语言里,我们定义一个实体,是这样的

public class User {
    private String name;
    private String id;

    public User(String name, String id) {
        this.name = name;
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

}

可以看到,仅仅两个属性,加上getter setter有这么多代码。那么kotlin是什么样子呢?

data class User(var name: String, var id: String)

你不要说我了个擦,这确实是全部代码。。没有少东西了。可以看到语法,括号里跟着参数,也是一种构造器。并且不用getter setter。

使用的时候正常使用就可以了。

val user = User("wing","222")
    user.id = "300"

这里提到一点,var 和val的区别。var一般是变量,val一般是常亮,即不可变量,也多用于只是用一次的变量。

这里你可能有疑问了,如果构造器是单参或者空参的呢? 语法如下:

class User {
    var name: String? = null
    var id: String? = null

    constructor(name: String) {
        this.name = name
    }

    constructor(name: String, id: String) {
        this.name = name
        this.id = id
    }
}

举个栗子

接下来以一个点击按钮,传递数据类向下一个Activity为栗子,把之前的知识应用一下。

首先,新建一个SecondActivity,提供一个静态方法,用于Activity的转跳。想必大家都知道这样的好处,就是让调用者不必看源码就知道需要什么参数。如果你按照java写,就会发现没有static这个关键字!不要慌,这里可以使用 伴生对象 来实现。伴生对象是伴随这个类声明周期的对象~下面看详细用法。

class SecondActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)
        toast(intent.getStringExtra(USER))
    }

   //创建一个伴生对象
    companion object{
        //extra的key
        val USER = "USER"
        fun startActivity(context: Context,user:User ){
            val intent = Intent(context,SecondActivity::class.java)
            intent.putExtra(USER,user)
            context.startActivity(intent)
        }
    }
}

在第一个Activity中,给按钮设置监听器,同时转跳到第二个Activity并且传递User对象。

class MainActivity : AppCompatActivity() {

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    button.setOnClickListener {
      val user = User("name")
      user.id = "100"
      SecondActivity.startActivity(this,user)
    }

  }
}

大功告成了!接下来运行下apk,看看第二个Activity成功接收到了传递的User(对了别忘了把User序列化).

对比一下,嗯哼?比Java少了多少? 有没有很爽啊哈。
本文这就结束了(嫌文字太短?不要急啦,先去动手实践下咯。。系列文章,既然挖了坑,就不会拖更的(吧..))

如果你是Android开发者,那么你还可以来 wing的酒馆: 425983695 来分享你的开发经验哦

一个使用Kotlin开发的完整项目地址

版权声明:本文为博主原创文章,欢迎注明出处后转载。

kotlin基础

kotlin 语言特性 kotlin中一切皆为对象 没有像java一般的基本数据类型,数值类型为:Int, Float, Double等 函数也是对象,可作为参数和返回值 自然就会有高阶函数和lam...
  • To_yan
  • To_yan
  • 2016年07月14日 02:05
  • 11927

心有Java,细嗅Kotlin —— 细数 Kotlin 优雅的语法糖

Kotlin的来历 Kotlin的作者是大名鼎鼎的Jetbrains公司。它有一系列耳熟能详的产品,诸如Android兄弟天天用的Android Studio, IntelliJ IDEA, 还...

Step into Kotlin - 23 - 与 Java 交互

Kotlin 调用 Java,Java 调用 Kotlin(类,伴生对象,重载,异常)

Kotlin 语法上的一些亮眼操作

Kotlin 语法上的一些亮眼操作Kotlin 初体验写在前面: 上上周我们创建了第一个 kotlin 的 android 应用。上周我花了一周的时间,在工作之余了解了 kotlin 的语法。感叹 ...
  • MeloDev
  • MeloDev
  • 2017年06月14日 15:31
  • 482

Kotlin-数据类

概述在开发过程中,经常会创建一些数据里,其没有任何逻辑功能,仅仅来用来保存数据。在Kolin中,将这些类统一称为数据类,用关键字data标记。data class User(val name: Str...

python练手项目(1)——字符图片生成

python练手项目(1)——字符图片生成设计思路 读入图片并读取图片的像素 将像素映射至字符 组合字符并写入文件 使用模块 pillow python的一种GUI库,其中最主要的是Image类,相...

Android 小项目练手——扫雷

这两天 闲的没事想起来写一个 小游戏练练手,也为了巩固 基础知识吧 ,这段时间我会定期的 写一些小项目。  今天第一篇: 扫雷——Android 版 第一: 新建项目   1: 布局文件:   ...

让你的代码量减少3倍!使用kotlin开发Android(三) 缩短五倍的Java Bean

回顾一下哈,没想到你已经坚持不懈看到第三篇了,不错哈~坚持就是胜利。 本文同步自博主的私人博客wing的地方酒馆在上一篇文章中,我们介绍了扩展函数,这里对上一篇进行一点小小的补充。还记得textvi...

让你的代码量减少3倍!使用kotlin开发Android(四) kotlin bean背后的秘密

上一篇我们介绍了缩短五倍的java bean,不知道你在看的时候有没有一种疑问捏?本文同步自博主的私人博客wing的地方酒馆再来回顾一下...

让你的代码量减少3倍!使用kotlin开发Android(二) --秘笈!扩展函数

本文承接上一篇文章:让你的代码量减少3倍!使用kotlin开发Android(一) 创建Kotlin工程本文同步自博主的私人博客wing的地方酒馆上一节说到,kotlin可以省去getter,sett...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:让你的代码量减少3倍!使用kotlin开发Android(三) 缩短五倍的Java Bean
举报原因:
原因补充:

(最多只允许输入30个字)