为什么to_java方法将Java中的整数(将是什么)转换为Long?

时间:2014-10-01 13:08:04

标签: ruby interop jruby rubymine

为什么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的成员?

1 个答案:

答案 0 :(得分:0)

只是因为JRuby中的Fixnum在内部表示为(原始)长字段(检查RubyFixnum.java),因此默认情况下Fixnum#to_java只返回它的内部Java值

同样适用于Bigint - 内部表示为BigInteger,因此您可以使用to_java

...您可以提供转化提示:1.to_java(:int).class # Java::JavaLang::Integer