- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以在 Scala 中动态强制运行时装箱?我想要一个功能:
def box(value :Any) :AnyRef
def box[T](value :T) :AnyRef
class Box[T :TypeTag](private var value :T) {
def get :T = value
def set(o :Any) {
...
}
}
runtimeMirror(getClass.getClassLoader).classSymbol(o.getClass).toType <:< typeOf[T]
最佳答案
只需投到 AnyRef
与 asInstanceOf
Scala 会将它变成 AnyRef
:
scala> val x = 13
x: Int = 13
scala> val xBoxed = x.asInstanceOf[AnyRef]
xBoxed: AnyRef = 13
scala> xBoxed.getClass()
res0: Class[_ <: AnyRef] = class java.lang.Integer
trait ValueClass[T] extends Any {
def value: T
def javaBoxed: AnyRef = value.asInstanceOf[AnyRef]
}
case class MyInt(value: Int) extends AnyVal with ValueClass[Int]
case class MyReal(asDouble: Double) extends AnyVal with ValueClass[Double] {
def value = asDouble
}
Product
的值类,就像所有案例类一样,使用
productElement
有一种更快的方法:
def javaBox(x: Product): AnyRef = {
if (x.productArity == 1) x.productElement(0).asInstanceOf[AnyRef]
else x.asInstanceOf[AnyRef] // or throw an exception if you prefer
}
Product
)都会导致 Scala 进行装箱,这意味着当调用未装箱的值时,该值从未装箱 → Scala 装箱 → 未装箱 → Java 装箱,而不是直接到 Java 装箱值。
关于scala - 从 Any 到 AnyRef 的通用/通用拳击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24757007/
这个问题在这里已经有了答案: 关闭 12 年前。 Possible Duplicate: What is boxing and unboxing and what are the trade off
这样做有什么意义吗? public static void Write(T value) { textWriter.Write(value.ToString()); } ...应该是这样的:
简而言之,我认为拳击是一种烦恼。让我们看看一些替代方案... public class Box where T : struct { public T Value { get; set
我只是想用 创建一个天气应用程序。天气 View Controller 显示 TableView 与 细胞 ,当单元格为 时轻拍导致 WeatherDetailsViewController . 我正
如有错误,请指正。Boxing+Varargs 是否优于 Boxing+Widening? 我在site中找到了那是另一种方式。 最佳答案 当多个可以符合条件时调用什么方法在 JLS #15.2.2
我正在通过 C#(第 4 版)阅读 CLR 一书,不是作为 C# 的新手,而是作为了解该语言的人试图提高我对 CLR 底层功能的掌握。 无论如何,在这本书中给出了一个例子 (pg127-131),当讨
我正在使用 Java 8 Stream API,如下所示: private Function process; // Intermediate step (& types) priv
我是一名优秀的程序员,十分优秀!