gpt4 book ai didi

java - 通过隐式向伴生对象添加方法

转载 作者:行者123 更新时间:2023-12-01 09:08:06 25 4
gpt4 key购买 nike

对于典型的类,您可以创建一个隐式类来向其他类实例添加新方法,如下所示:

 implicit class IntWrapper(i: Int) {
def otherMethod(s: String) = println(s"i: ${i} with ${s}")
}

现在你可以做

3.otherMethod("something")

我的问题是

  1. 是否可以向 Int 伴生对象 添加一个方法?(已回答 here )

  2. 想象一下,您的项目中定义了一个 Java enum,并且您正在 Scala 代码中使用它。 Java enum 具有 .valueOf(s: String) 方法,该方法从 String 获取枚举值,但会抛出 IllegalArgumentException 。我想添加一个方法 .safeValueOf(s: String) ,它将返回一个 Option

    是否可以像第一个示例中那样将该方法添加到 Java enum 中?

最佳答案

这是您可以为 2 做的事情(近似值,未经测试):

import scala.reflect.ClassTag
import scala.util.Try

object SafeValueOf {
def apply[E <: Enum[E]](s: String)(implicit tag: ClassTag[E]): Option[E] =
Try(Enum.valueOf(tag.runtimeClass.asInstanceOf[Class[E]], s)).toOption
}

用法:SafeValueOf[MyEnum]("something")

关于java - 通过隐式向伴生对象添加方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41088593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com