当前位置: 首页 > 知识库问答 >
问题:

如何覆盖 Kotlin 对象中的函数?

楚宏胜
2023-03-14

我在将应用程序从Java镜像到Kotlin时遇到了一些问题。我用java编写了这个类,效果很好:

public final class BooleanUtils extends org.apache.commons.lang3.BooleanUtils {

    private BooleanUtils() {
    }

    /**
     * Converts a String to Boolean.
     * @param str  the String to check
     * @return true/false
     */
    public static boolean toBoolean(final String str) {
        return org.apache.commons.lang3.BooleanUtils.toBoolean(str) || "1".equals(str);
    }

}

在IntelijiIdea中自动转换后,它开始变成这样

import org.apache.commons.lang3.BooleanUtils

object BooleanUtils : BooleanUtils() {
    
    /**
     * Converts a String to Boolean.
     * @param str  the String to check
     * @return true/false
     */
    fun toBoolean(str: String): Boolean {
        return BooleanUtils.toBoolean(str) || "1" == str
    }
}

但编译器告诉我

意外重写:以下声明具有相同的JVM签名(to boolean(Ljava/lang/String;)Z): fun toBoolean(p0: String?):在my . util . booleanutils fun to Boolean中定义的Boolean(str: String?):在my.util.BooleanUtils中定义的布尔值

我怎么能覆盖乐趣到布尔(str: String),使它像Java一样工作?

共有1个答案

昝浩阔
2023-03-14

我更喜欢String类的扩展:

fun String.boolean(): Boolean = 
    return when(this.toLowerCase()) {
        "y", "yes", "t", "true", "1" -> true
        else -> false
    }
 类似资料:
  • 问题内容: 场景: 该代码不起作用,而且我找不到像继承那样来调用trait函数的方法。我打过电话,,,和以下内容: 没用。 有没有办法使它起作用,或者我必须完全重写特质函数,它比这要复杂得多:) 问题答案: 您的最后一个快到了: 特质不是阶级。您不能直接访问其成员。基本上只是自动复制和粘贴…

  • 在Groovy中,我重写了这样一个任务: 如何使用Kotlin dsl?我知道我可以创建这样的任务: 但是我找不到等价的方法来声明它为overwrite,这导致了一个错误

  • 问题内容: 堆垛机。我一直在网站上搜索我的问题,但没有找到我想要的东西。我坚持下面的代码: 得到了一个不错的数组列表,但是如果我在ArrayList中添加更多“ newUsers”,它们似乎会相互覆盖。我不想创建一个newUser1,newUser2对象,因为稍后在我的程序中,我必须能够直接从该程序添加新用户。 如何实现呢? ValidateUser: } 问题答案: 如果我理解正确,那么您是以这

  • 我试图通过遵循这个问题中的建议来覆盖Laravel 5中的注册函数。然而,在我的例子中,我并没有试图从注册页面重定向用户。相反,我只想注册新用户,但保持当前(管理员)用户登录。默认函数验证并登录新用户,然后重定向到“主页”。下面是我尝试添加到AuthController的内容。php: 我认为我很聪明,只是创建了新帐户,然后将当前用户重定向到管理页面。但是,没有创建任何用户,也没有发生重定向。任何

  • 问题内容: 当Java中的类未覆盖 hashCode()时 ,打印此类的实例将提供一个不错的唯一数字。 Object的Javadoc谈到了 hashCode() : 在合理可行的范围内,由Object类定义的hashCode方法确实为不同的对象返回不同的整数。 但是,当类重写 hashCode()时 ,如何获得其唯一编号? 问题答案: System.identityHashCode(yourObj

  • 在swagger ui中,这样的例子是 对于嵌套对象,它工作正常(使用XML对象的标记名,而不是该对象的标题)。对于结果模式根对象,也可以。 根对象仅在body参数中存在问题。