Instanciar um non-static Java Inner Classe de JRuby
-
18-09-2019 - |
Pergunta
Assim, dado a seguinte classe java:
class Outer
{
private int x;
public Outer(int x) { this.x = x; }
public class Inner
{
private int y;
public Inner(int y) { this.y = y; }
public int sum() { return x + y; }
}
}
Eu posso criar uma instância da classe interna de Java da seguinte maneira:
Outer o = new Outer(1);
Outer.Inner i = o.new Inner(2);
No entanto, eu não consigo como fazer o mesmo a partir JRuby
#!/usr/bin/env jruby
require 'java'
java_import 'Outer'
o = Outer.new(1);
i = o.Inner.new(2); #=> NoMethodError: undefined method `Inner' for #<Outer...>
O que é a maneira correta de fazer isso?
Solução
i = Outer::Inner.new(o,2)
Outras dicas
A partir do que pode ser visto na esta discussão , você vai ter que fazer Outer:Inner.new(o, 2)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow