Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JRuby字符串类方法不可用_Ruby_Jruby - Fatal编程技术网

JRuby字符串类方法不可用

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

我似乎无法从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")

# 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的回答标记为“有用”。