簡體   English   中英

用於將 null 轉換為類的 JRuby 等效項

[英]JRuby equivalent for casting null to class

我嘗試通過 JRuby 使用 Java weka 機器學習庫。 到目前為止它運行良好,我想知道的只有一件事:

為了創建字符串屬性,您可以使用與 Java 中的名義屬性相同的構造函數,但第二個參數是一個空值轉換為 FastVector:

Attribute attribute = new Attribute("name", (FastVector) null);

另請參閱此 Stackoverflow 帖子Attributeweka 文檔

在 JRuby 中,如果您嘗試只傳遞nil ,例如:

java_import 'weka.core.Attribute'
attribute = Attribute.new('name', nil)

它將引發Java::JavaLang::NullPointerException錯誤。

完整的堆棧跟蹤是:

Java::JavaLang::NullPointerException: 
from weka.core.Attribute.<init>(weka/core/Attribute.java:303)
from weka.core.Attribute.<init>(weka/core/Attribute.java:290)
from java.lang.reflect.Constructor.newInstance(java/lang/reflect/Constructor.java:423)
from RUBY.<eval>((irb):7)
from org.jruby.RubyKernel.eval(org/jruby/RubyKernel.java:978)
from org.jruby.RubyKernel.loop(org/jruby/RubyKernel.java:1291)
from org.jruby.RubyKernel.catch(org/jruby/RubyKernel.java:1098)
from org.jruby.RubyKernel.catch(org/jruby/RubyKernel.java:1098)
from Users.pgoetze.$_dot_rvm.rubies.jruby_minus_9_dot_0_dot_1_dot_0.bin.irb.<top>(/Users/pgoetze/.rvm/rubies/jruby-9.0.1.0/bin/irb:13)
from java.lang.invoke.MethodHandle.invokeWithArguments(java/lang/invoke/MethodHandle.java:627)

有沒有辦法在 JRuby 中創建一個空向量,它可以作為第二個參數而不是nil傳遞?

如果沒有,創建字符串屬性的方法可能是什么?

正如JRuby wiki 所述,您應該使用反射來獲取對指定其參數類型的構造函數的引用。

java_import java.util.List
java_import weka.core.Attribute
#...
constructor = Attribute.java_class.declared_constructor(java.lang.String, java.util.List)
attribute = constructor.new_instance('name', nil)

筆記:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM