java静态类写法_Kotlin中类似Java的静态方法

刚开始自学Kotlin,因为和Java很像,基础部分还是比较容易理解的,但是Kotlin有自己的特性。

在Kotlin里面我们发现没有静态变量和方法的说法,习惯了Java中使用静态方法还真有点不适应。

开始在网上查找资料时大多会说使用伴生对象的方法来模拟静态。后来在官方文档中发现其实这种方式不是最好的实现方法。

那首先看下在Java中静态方法和静态变量的使用方式:

public class StaticDemo {

public static int number = 1;

public static int getId(){

return 2;

}

}

使用也很简单

public static void main(String[] args){

int number = StaticDemo.number;

int id = StaticDemo.getId();

}

那Kotlin中的写法呢?

我们使用伴生对象的方式看下:

class KtStatic {

var number1 = 10

fun getId1():Int{

return 11

}

//伴生对象

companion object{

var number2 = 20

fun getId2():Int{

return 21

}

}

}

在看下在Kotlin中使用和Java中使用有什么不同

//Kotlin中

fun main(args: Array) {

// 不可直接访问number1

// var number1 =KtStatic.number1

// 同样不能直接访问getId1

// var id1 = KtStatic.getId1()

// 使用下面方式看起来和在Java中使用的是一样的

var number2 = KtStatic.number2

var id2 = KtStatic.getId2()

}

Java中使用有了变化

public static void main(String[] args) {

// 不可访问,好理解

// int number1 = KtStatic.number1;

// 也不可访问,

// int number2 = KtStatic.number2;

// 正确访问方式,意外吧,呵呵

int number = KtStatic.Companion.getNumber2();

int id = KtStatic.Companion.getId2();

}

这种方法实际Companion相当于内部类

那么下面来说另一种写法:

package com.yiifox.demo

var number = 1

fun getId():Int{

return 2

}

//方便知道我写的文件名

class Kt2Static

Kotlin中使用

package com.yiifox.demo.test

import com.yiifox.demo.KtStatic

import com.yiifox.demo.getId

import com.yiifox.demo.number

fun main(args: Array) {

// 使用很简单,但是要注意导包

var number2 = number

var id = getId()

}

那么在Java中呢?

public static void main(String[] args) {

// 注意,原来写的类名是Kt2Static,使用时却多了个尾巴Kt

int number = Kt2StaticKt.getNumber();

int id = Kt2StaticKt.getId();

}

这种就是比较符合我们的使用了。

关于在Kotlin中明明定义的是

var number = 1

Java中却使用的是getNumber();是因为Kotlin在转化为Java时会自动进行get、set包装。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值