什么是Java函数等同于Ruby Object#inspect
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了什么是Java函数等同于Ruby Object#inspect,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1759字,纯文字阅读大概需要3分钟。
内容图文
在Ruby中,我可以使用以下代码获取实例变量val
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 ruby??中的一些功能,我主要在rubymine监视工具窗口中使用Object#inspect,我希望我可以像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
}
}
解决方法:
我想你想要的是Apache Commons Lang库中的ReflectionToStringBuilder.
在您的类中,定义您的inspect()方法,如下所示,您应该能够看到预期的结果:
public void inspect() {
System.out.println(ReflectionToStringBuilder.toString(this));
}
内容总结
以上是互联网集市为您收集整理的什么是Java函数等同于Ruby Object#inspect全部内容,希望文章能够帮你解决什么是Java函数等同于Ruby Object#inspect所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。