gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:49:19 24 4
gpt4 key购买 nike

为什么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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com