浅谈Kotlin(五): 静态变量&静态方法

Java中定义静态变量和方法:

复制代码
public class XUtils {

    // utils版本号
    public static String utilVersion="1.0";

    /**
     * 显示金额,负数为-¥0,非负数为¥0
     * @param tv     文本控件
     * @param price  金额
     */
    public static void showPirce(TextView tv , String price ){
        int result = new BigDecimal(price).compareTo(BigDecimal.ZERO);
        if (result>=0)
        {
            tv.setText("¥" + new BigDecimal(price));
        }else
        {
            tv.setText("" + new BigDecimal(price));
        }
    }
}
复制代码

 

Kotlin中定义静态变量和方法:

第一种方式:

companion object 修饰为伴生对象,伴生对象在类中只能存在一个,类似于java中的静态方法 Java 中使用类访问静态成员,静态方法。

复制代码
class EUtils {
    companion object {
        // utils版本号
        var utilVersion = "1.0"

        /**
         * 显示金额,负数为-¥0,非负数为¥0
         * @param tv     文本控件
         * @param price  金额
         */
        fun showPrice(tv: TextView, price: String): Unit {
            var result = BigDecimal(price).compareTo(BigDecimal.ZERO)
            if (result >= 0) {
                tv.setText("¥" + BigDecimal(price))
            } else {
                tv.setText("" + BigDecimal(price))
            }
        }
    }
}
复制代码

第二种方式:

object 修饰的类为静态类,里面的方法和变量都为静态的。

复制代码
object MUtils {
    // utils版本号
    var utilVersion = "1.0"
    /**
     * 显示金额,负数为-¥0,非负数为¥0
     * @param tv     文本控件
     * @param price  金额
     */
    fun showPrice(tv: TextView, price: String): Unit {
        var result = BigDecimal(price).compareTo(BigDecimal.ZERO)
        if (result >= 0) {
            tv.setText("¥" + BigDecimal(price))
        } else {
            tv.setText("" + BigDecimal(price))
        }
    }
}
复制代码

 

以上的调用方法都一样,类名.变量 、类名.方法

        EUtils.utilVersion
        MUtils.utilVersion
        XUtils.utilVersion
        MUtils.showPrice(tvPrice,"111")
        EUtils.showPrice(tvPrice,"111")
        XUtils.showPirce(tvPrice,"111")

 

posted @   听着music睡  阅读(1573)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示