如何从Scala返回"原始Java char"?

Seb*_*iot 4 java scala char

如果我写:

def getShort(b: Array[Byte]): Short
Run Code Online (Sandbox Code Playgroud)

在Scala中,我在Java中获得了原始的简短,这很好.但如果我写:

def getChar(b:Array [Byte]):Char

我得到一个scala.Char对象,这不是很好.如果我写:

def getChar(b: Array[Byte]): Character
Run Code Online (Sandbox Code Playgroud)

我得到了一个java.lang.Character,这也不错.

如果Scala"Char"不是Java"char",而Scala"Character"不是Java"char",那还剩下什么?

Rex*_*err 10

你弄错了; Char 是 Java原始字符.注意:

scala> class IsPrimitiveChar {
     |   def myChar(i: Int): Char = i.toChar   // I am clearly a Char, whatever that is!
     | }
defined class IsPrimitiveChar

scala> :javap IsPrimitveChar
Compiled from "<console>"
public class IsPrimitiveChar extends java.lang.Object implements scala.ScalaObject{
    public char myChar(int);  // Look, it returns a char!
    public IsPrimitiveChar();
}


scala> :javap -c -private IsPrimitiveChar
Compiled from "<console>"
public class IsPrimitiveChar extends java.lang.Object implements scala.ScalaObject{
public char myChar(int);
  Code:
   0:   iload_1
   1:   i2c               // Look, primitive int to char conversion in bytecode!
   2:   ireturn           // And that's all!
Run Code Online (Sandbox Code Playgroud)

:javap顺便说一下,需要在类路径上使用tools.jar 才能工作.它包含在Sun/Oracle JVM中.