【发布时间】:2017-12-15 14:43:24
【问题描述】:
我正在做一个 Web 服务调用,它以名为 Foo 的模型类进行响应。 Foo 没有扩展任何其他类。
Foo data = call();
我可以正常访问所有数据字段。 String str = data.getData();
但是,如果我这样做 System.out.println(data.toString());
我得到以下输出:com.package.Foo.$$$.Bar@2938ac9a
我怀疑 Web 框架正在围绕响应做一些反射魔术,并用代理类包装它。由于Bar 在应用程序级别扩展Foo,所以我什么都看不到,但仍然可以访问我需要的所有数据。但是……
问题:
当我尝试序列化 Foo 数据时;结果我得到了很多意想不到的数据和字段。
我想知道是否有人可以解释一下$$$ 在 java 中的含义以及如何将Bar 对象转换回Foo?
【问题讨论】:
-
我相信这只是一个自动生成的类名。
-
关于如何将 Bar 转换为 Foo 的任何想法?
-
除非你的
Foo类有一个复制构造函数,我不认为有一个简单的方法。你在做什么导致问题的序列化?
标签: java reflection