Kotlin基础教程之dataclass,objectclass,use函数,类扩展,socket

所属分类: 软件编程 / java 阅读数: 22
收藏 0 赞 0 分享

Kotlin基础教程之dataclass,objectclass,use函数,类扩展,socket

Kotlin提供了一些机制来扩展已有的类,如下:

还记得我们之前写过的Point3D类吗?(将其略作修改,将成员变量改为Double类型)

让我们为其扩展一个length函数

扩展的方法很简单,只要在函数名前面加上类名就行了.

这样Point3D的对象就有了一个名为length的方法.

运行的结果不出所料:

除此之外,在Kotlin中还有一些特殊的类,比如Data Class:


有些类只包含数据,不需要包含方法,就可以声明为data class,当然data class并不是不能包含方法.

data class最大的特色在于copy函数和多变量赋值,可以在一条语句里面把不同的字段赋值给不同的变量.

运行结果如下:


Kotlin一般在类中不允许static成员,前面曾经说过可以使用companion object来创建一个伴生对象从而可以使用static成员.

这里还有一种方法就是使用object关键字声明一种特殊的类,这个类只有一个实例,因此看起来整个类就好像是一个对象一样.如下:

这里把类声明时的class关键字改成了object,这个类里面的成员默认都是static的.

另外我们可以看到在这段代码中出现了一个use函数,这个函数的参数是一个lambda表达式或者说一个匿名函数.

其参数必须实现Closeable接口,其参数在函数结束后会自动关闭,调用其close方法,无论是否发生异常.

其实这个用法来自于Java7中引入的一个语法,在Java7中引入的这个语法名为try-with-resource,其对应的Java代码如下:


server变量在try语句中被声明并初始化,无论是否发生异常,最后server都会被自动关闭.

之所以引入这种语法,是为了解决finally语句的不足.

在Kotlin中的use函数就是实现了Java中try-with-resource语句的功能.

这段Kotlin代码写的是一个多线程Socket服务器的demo,其他部分的代码如下:

客户端代码:


当Socket服务器启动后,再启动SocketClient,运行结果如下:

服务器输出:

客户端输出:

可以看到Socket服务已经正常启动了.

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

更多精彩内容其他人还在看

Java数据类型的规则

这篇文章主要介绍了Java数据类型的规则的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Spring整合TimerTask实现定时任务调度

这篇文章主要介绍了Spring整合TimerTask实现定时任务调度的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

详解SpringMVC使用MultipartFile实现文件的上传

本篇文章主要介绍了SpringMVC使用MultipartFile实现文件的上传,本地的文件上传到资源服务器上,比较好的办法就是通过ftp上传。这里是结合SpringMVC+ftp的形式上传的,有兴趣的可以了解一下。
收藏 0 赞 0 分享

SpringMVC上传文件的三种实现方式

本篇文章主要介绍了SpringMVC上传文件的三种实现方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

微信公众帐号开发-自定义菜单的创建及菜单事件响应的实例

本篇文章主要介绍了微信公众帐号开发-自定义菜单的创建及菜单事件响应的实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
收藏 0 赞 0 分享

浅析Java中的继承与组合

本文将介绍组合和继承的概念及区别,并从多方面分析在写代码时如何进行选择。文中通过示例代码介绍的很详细,有需要的朋友可以参考借鉴,下面来一起看看吧。
收藏 0 赞 0 分享

利用反射获取Java类中的静态变量名及变量值的简单实例

下面小编就为大家带来一篇利用反射获取Java类中的静态变量名及变量值的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

java启动线程的3种方式对比分析

这篇文章主要为大家对比分析了java启动线程的3种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

SpringMVC上传和解析Excel方法

这篇文章主要介绍了SpringMVC上传和解析Excel方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

JAVA中String类与StringBuffer类的区别

这篇文章主要为大家详细介绍了JAVA中String类与StringBuffer类的区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享
查看更多