日期:2014-05-20  浏览次数:20722 次

只有一个Car@32c41a能得到原来的对象么?
java只有一个Car@32c41a能得到原来的对象么?这是一个car 对象调用了tostring之后,能否得到原来的类,其实想得到原来类的各个域的信息,不知道怎么写

------解决方案--------------------
可以得到原来的类,但是得不到原来的对象了
Car是代表类型,@是固定的,32c41a是对象的哈希值
要想通过这样的字符串还原是不可能的,已经丢失了各个属性的信息了
如果你只是想得到类的定义信息,那么可以通过反射
Java code
String s = "Car@32c41a";
s = s.relaceAll("(.*?)@.*", "$1");
Class<?> clazz = Class.forName(s);
Field[] fds = clazz.getDeclaredFields();
for (Field f : fds) {
    System.out.println(f);
}

------解决方案--------------------
嗯。
就像只知道人姓名不能克隆整个肉体一样,只知道toString之后的结果而不知道其他属性值当然无法还原对象。