JRuby字符串类方法不可用
我似乎无法从JRuby中调用任何Java的string方法。同样的语法风格也适用于数学类。我做错了什么JRuby字符串类方法不可用,ruby,jruby,Ruby,Jruby,我似乎无法从JRuby中调用任何Java的string方法。同样的语法风格也适用于数学类。我做错了什么 #! /usr/bin/env jruby require 'rubygems' require 'java' puts java.lang.Math::max(1000,200) puts java.lang.Math::PI # this doesn't work puts java.lang.String::toUpperCase("we, the people") # thi
#! /usr/bin/env jruby
require 'rubygems'
require 'java'
puts java.lang.Math::max(1000,200)
puts java.lang.Math::PI
# this doesn't work
puts java.lang.String::toUpperCase("we, the people")
# this doesn't work either
JString = java.lang.String
puts JString.toUpperCase('We, the people')
#toUpperCase exists though, see below
puts java.lang.String.java_class.declarSed_instance_methods
我想这就是你想要做的:
java.lang.String.new("we, the people").toUpperCase
正如@Jesper所提到的,toUpperCase是一个带有String类的实例方法。将其用作静态方法将不起作用
另外请注意,返回的类是原生Ruby类型。我认为这就是您要做的:
java.lang.String.new("we, the people").toUpperCase
正如@Jesper所提到的,toUpperCase是一个带有String类的实例方法。将其用作静态方法将不起作用
还要注意,返回的类是原生Ruby类型。注意
toUpperCase
是一个实例方法,而不是静态方法(Math.max
和Math.PI
是类Math
的静态方法和静态成员变量)。你似乎在调用toUpperCase
就好像它是一个静态方法。我想这是一种在JRuby和其他实现之间保持可插入性的方法。谢谢,Jesper。如果有办法接受你和高拉夫的答案,我会的。(我没有看到任何接受方法。)我能够将Gaurav的回答标记为“有用”。请注意,toUpperCase
是一个实例方法,而不是静态方法(Math.max
和Math.PI
是一个静态方法和类Math
的静态成员变量)。你似乎在调用toUpperCase
就好像它是一个静态方法。我想这是一种在JRuby和其他实现之间保持可插入性的方法。谢谢,Jesper。如果有办法接受你和高拉夫的答案,我会的。(我看不到任何接受的方法。)我能够将Gaurav的回答标记为“有用”。