В Ruby я могу получить экземпляр переменной Вэл с следующим кодомЧто такое Java функция эквивалентно Рубиновый Object # осматривайте
class C
def initialize(*args, &blk)
@iv = "iv"
@iv2 = "iv2"
end
end
puts "C.new.inspect:#{C.new.inspect} ---- #{::File.basename __FILE__}:#{__LINE__}"
# => C.new.inspect:#<C:0x4bbfb90a @iv="iv", @iv2="iv2"> ---- ex.rb:8
В Java, я ожидаю, что я могу получить следующий результат, как я должен делать?
package ro.ex;
public class Ex {
String attr;
String attr2;
public Ex() {
this.attr = "attr";
this.attr2 = "attr2";
}
public static void main(String[] args) {
new Ex().inspect();
// => Ex attr= "attr", attr2 = "attr2";
}
}
обновление:
я найти this может решить мой вопрос, но я хочу более простым, как некоторые функции в guava.in рубина, я в первую очередь использовать Object # инспектировать в окне часов инструмента RubyMine, я ожидал я могу использовать его как obj.inspect
обновление:
я, наконец, определить использование Tedy Kanjirathinkal ответ и я реализовать самостоятельно с помощью следующего кода:
package ro.ex;
import com.google.common.base.Functions;
import com.google.common.collect.Iterables;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.Map;
/**
* Created by roroco on 10/23/14.
*/
public class Ex {
String attr;
String attr2;
public Ex() {
this.attr = "val";
this.attr2 = "val2";
}
public String inspect() {
Field[] fs = getClass().getDeclaredFields();
String r = getClass().getName();
for (Field f : fs) {
f.setAccessible(true);
String val = null;
try {
r = r + " " + f.getName() + "=" + f.get(this).toString();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return r;
}
public static void main(String[] args) {
StackTraceElement traces = new Exception().getStackTrace()[0];
System.out.println(new Ex().inspect());
// => ro.ex.Ex attr=val attr2=val2
}
}
не могли бы вы положить, что (например, код в ссылке) в функцию? –
Близко связанные: http://stackoverflow.com/questions/1350397/java-equivalent-of-python-repr –