为什么to_java方法将1的整数值转换为Java::JavaLang::Long类,而不是Integer类?
下面是这个方法的一个例子:
puts 1.to_java.class
在普通 Java 中,值 1,如果放在包装类中,将是 Java.lang.Integer 的成员(如果我错了请纠正我)。为什么在 Ruby 中,1.to_java 是 Java::JavaLang::Long 的成员?
最佳答案
只是因为 JRuby 中的 Fixnum
在内部表示为(原始)长字段(检查 RubyFixnum.java),因此默认情况下 Fixnum#to_java
只是返回它的内部 Java 值
同样适用于 Bigint
- 在内部表示为 BigInteger,因此您可以使用 to_java
...您可以提供转换提示:1.to_java(:int).class # Java::JavaLang::Integer
关于ruby - 为什么 to_java 方法将 Java 中的整数(可能是)转换为 Long?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26142137/