为什么to_java方法将1的整数值转换为Java :: JavaLang :: Long类而不是Integer calss?
以下是此方法的一个示例:
puts 1.to_java.class
在普通的Java中,值1(如果放在包装器类中)将成为Java.lang.Integer的成员(如果我错了,请纠正我)。为什么在Ruby中,1.to_java是Java :: JavaLang :: Long的成员?
答案 0 :(得分:0)
只是因为JRuby中的Fixnum
在内部表示为(原始)长字段(检查RubyFixnum.java),因此默认情况下Fixnum#to_java
只返回它的内部Java值
同样适用于Bigint
- 内部表示为BigInteger,因此您可以使用to_java
...您可以提供转化提示:1.to_java(:int).class # Java::JavaLang::Integer