Scala 如何从T中获取类型和类型大小?
如何从T获取类型和类型大小? 例如,当我试图在Scala中使用泛型将Integer或Long转换为ByteArray时,如何从T获取类型信息Scala 如何从T中获取类型和类型大小?,scala,types,type-conversion,bytearray,Scala,Types,Type Conversion,Bytearray,如何从T获取类型和类型大小? 例如,当我试图在Scala中使用泛型将Integer或Long转换为ByteArray时,如何从T获取类型信息 def dataToByteArray[T](x: T) = { if T is IntType ByteBuffer.allocate(4).putInt(x).array() else if T is LongType ByteBuffer.allocate(8).putLong(x).array() else ra
def dataToByteArray[T](x: T) = {
if T is IntType
ByteBuffer.allocate(4).putInt(x).array()
else if T is LongType
ByteBuffer.allocate(8).putLong(x).array()
else
raise an error
}
我可能会使用多态函数,但我很好奇scala如何提供类型信息
def dataToByteArray(x: Int) = {
ByteBuffer.allocate(4).putInt(x).array()
}
def dataToByteArray(x: Long) = {
ByteBuffer.allocate(8).putLong(x).array()
}
可以,但它不像在C/C++中那样简单——为了得到T类型对象的估计大小,必须遍历对象的图形。有一些用于此的库,例如
注意,使用这样的库是非常罕见的,很可能意味着你做了错事。你可以,但它并不像C/C++那样简单——为了得到类型T的对象的估计大小,你必须遍历对象的图形。有一些用于此的库,例如
注意,使用这样的库是非常罕见的,很可能意味着你做了错事。你可以,但它并不像C/C++那样简单——为了得到类型T的对象的估计大小,你必须遍历对象的图形。有一些用于此的库,例如
注意,使用这样的库是非常罕见的,很可能意味着你做了错事。你可以,但它并不像C/C++那样简单——为了得到类型T的对象的估计大小,你必须遍历对象的图形。有一些用于此的库,例如
请注意,使用这样的库是非常罕见的,很可能意味着你做错了什么。我突然想到了一个主意:吼叫
def dataToByteArray[T](x: T) = {
x match {
case i: Int => ByteBuffer.allocate(4).putInt(x).array()
case l: Long => ByteBuffer.allocate(8).putLong(x).array()
case _ => throw new Exception("Runtime exception")
}
}
我突然想到了一个主意
def dataToByteArray[T](x: T) = {
x match {
case i: Int => ByteBuffer.allocate(4).putInt(x).array()
case l: Long => ByteBuffer.allocate(8).putLong(x).array()
case _ => throw new Exception("Runtime exception")
}
}
我突然想到了一个主意
def dataToByteArray[T](x: T) = {
x match {
case i: Int => ByteBuffer.allocate(4).putInt(x).array()
case l: Long => ByteBuffer.allocate(8).putLong(x).array()
case _ => throw new Exception("Runtime exception")
}
}
我突然想到了一个主意
def dataToByteArray[T](x: T) = {
x match {
case i: Int => ByteBuffer.allocate(4).putInt(x).array()
case l: Long => ByteBuffer.allocate(8).putLong(x).array()
case _ => throw new Exception("Runtime exception")
}
}