让你的代码量减少3倍!使用kotlin开发Android(三) 缩短五倍的Java Bean
2017-05-19 17:34
746 查看
回顾一下
哈,没想到你已经坚持不懈看到第三篇了,不错哈~坚持就是胜利。本文同步自博主的私人博客wing的地方酒馆
在上一篇文章中,我们介绍了扩展函数,这里对上一篇进行一点小小的补充。
还记得textview是如何setText()的吗
textView.text = "hello kotlin"1
1
[/code]
不知道你有没有想过,这个.text是如何实现的呢。 哈哈,其实你们大概已经猜到了。就是通过扩展函数实现的
public var TextView.text: CharSequence get() = getText() set(v) = setText(v)1
2
3
4
1
2
3
4
[/code]
开始今天的内容
今天介绍的是一种叫做数据类的类,他没有什么功能,只负责储存数据,也就是我们常说的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; } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[/code]
可以看到,仅仅两个属性,加上getter setter有这么多代码。那么kotlin是什么样子呢?
data class User(var name: String, var id: String)1
1
[/code]
你不要说我了个擦,这确实是全部代码。。没有少东西了。可以看到语法,括号里跟着参数,也是一种构造器。并且不用getter setter。
使用的时候正常使用就可以了。
val user = User("wing","222") user.id = "300"1
2
1
2
[/code]
这里提到一点,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 } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[/code]
举个栗子
接下来以一个点击按钮,传递数据类向下一个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) } } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[/code]
在第一个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) } } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[/code]
大功告成了!接下来运行下apk,看看第二个Activity成功接收到了传递的User(对了别忘了把User序列化).
对比一下,嗯哼?比Java少了多少? 有没有很爽啊哈。
本文这就结束了(嫌文字太短?不要急啦,先去动手实践下咯。。系列文章,既然挖了坑,就不会拖更的(吧..))
如果你是Android开发者,那么你还可以来 wing的酒馆: 425983695 来分享你的开发经验哦
一个使用Kotlin开发的完整项目地址
相关文章推荐
- 让你的代码量减少3倍!使用kotlin开发Android(三) 缩短五倍的Java Bean
- 让你的代码量减少3倍!使用kotlin开发Android(三) 缩短五倍的Java Bean
- 让你的代码量减少3倍!使用kotlin开发Android(四) kotlin bean背后的秘密
- 让你的代码量减少3倍!使用kotlin开发Android(四) kotlin bean背后的秘密
- 让你的代码量减少3倍!使用kotlin开发Android(四) kotlin bean背后的秘密
- 让你的代码量减少3倍!使用kotlin开发Android(二) --秘笈!扩展函数
- 让你的代码量减少3倍!使用kotlin开发Android
- 让你的代码量减少3倍!使用kotlin开发Android(一) 创建Kotlin工程
- 让你的代码量减少3倍!使用kotlin开发Android(二) --秘笈!扩展函数
- 让你的代码量减少3倍!使用kotlin开发Android(一)
- 让你的代码量减少3倍!使用kotlin开发Android(一)
- 让你的代码量减少3倍!使用kotlin开发Android(一)
- 让你的代码减少三倍!使用kotlin开发Android(五) 监听器
- 让你的代码减少三倍!使用kotlin开发Android(五) 监听器
- 让你的代码减少三倍!使用kotlin开发Android(五) 监听器
- Java vs. Kotlin:应该使用Kotlin进行Android开发吗?
- 使用Android开发测试纯Java工程代码
- 【Android开发】用户界面设计-使用XML和Java代码混合控制UI界面
- 使用Eclipse开发能够在 LoadRunner 中运行的Java代码
- Android中不使用布局文件,java代码动态创建布局及控件