Скажем, у нас есть довольно простой Java-бин:
public class Test {
private String thing;
public void setThing(String thing) {
this.thing = thing;
}
public String getThing() {
return thing;
}
@Override
public String toString() {
return "Test{thing=" + thing + "}>";
}
}
И затем мы используем этот бин из Ruby:
java_import 'Test'
t = Test.new
t.thing = 'blah'
p t
Вывод:
#<Java::Default::Test:0x5fdba6f9>
Но я думаю, что я бы предпочел что-то вроде
#<Test{thing=blah}>
Или, может быть, даже просто
Test{thing=blah}
Я знаю, что мог бы добавить метод под названием inspect()
ко всем моим классам Java, но, похоже, каждая реализация просто все равно будет вызывать toString()
, потому что намерение toString()
в Java обычно является так же, как и намерение #inspect
в Ruby (т. е. строка, предназначенная только для просмотра разработчиками).
Так что мне интересно, есть ли простой способ указать JRuby использовать toString()
, когда #inspect
вызывается для любого объекта Java?