在我们的项目中,某些数据类 (用于 API 请求和响应的 POJO)
正在覆盖 toString()
方法以提供有意义的信息 - 但某些数据类 < strong>不覆盖toString()
。
当应用程序打印toString()
未被覆盖的数据类的logs
时,它们不会打印有意义的信息,它们只是调用对象类toString( )
。
所以我们要识别那些数据类并提供toString()
实现
。
有什么方法可以识别未实现
toString()
方法的类。
查看每个数据类并检查 toString()
方法是一项乏味且耗时的任务。
有没有更好的方法可以使用一些工具(如 eclipse 或其他工具)来做到这一点?
最佳答案
当类未覆盖 toString()
- 它必须使用包含类名的默认实现。因此:检查您的日志并向后工作!
或者,您可以使用反射:
- 启动 JVM 运行,在类路径中包含所有您的类
- 扫描所有您的类的类路径(或者如果可能:那些类似于您的 POJO 的类)
- 检查每个类是否实现了
toString()
显然,这需要大量工作 - 但没有技术原因说明为什么这不可行。当然,您的主要问题可能是减少要查看的类的数量 - 包含 500 个类的列表也不会太有帮助。
还有一个(潜在的)选项:创建一个 PojoBase 类,它使用反射 来实现 toString() 和可能的 equals()/hashCode() - 然后只需确保所有 POJO 类都扩展那个基类。 (免责声明:当然你必须了解这样做的后果。但我们最近创建了这样一个使用 Apache Commons EqualsBuilder 的 BaseBean
,......以这种方式调用)
关于java - 如何在java项目中找到哪个数据类没有覆盖toString()方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45319016/