我可以列出为我的 class 调用隐式 toString() 时的所有情况吗?

Can I list all cases when implicit toString() is called for my class?

对于我项目中的某些 类,我覆盖了 toString() 方法。主要目的是提高日志的可读性。这意味着此类字符串未本地化,不应出现在 UI 中。另外,我担心某个地方会调用隐式 toString() 而不是使用实际对象,例如当它被序列化时(使用一些第 3 方库)。

有没有办法列出调用 toString() 时的所有情况?更好的是,只在我的包中为 类 设置它,或者以其他方式过滤琐碎的情况,例如 log("index=" + index)?或禁止隐式 toString() 用于我项目中的特定 类?

我的项目实际上使用 Java 7 并针对 Android 编译。我目前使用 Eclipse (ADT),并且启用了 Lint 分析。但我愿意切换工具和环境。

您可以尝试 JArchitect 及其 CQLinq 功能,例如您可以这样执行查询:

from m in Methods where m.IsUsing ("java.lang.String.toString()") select m

您还可以定义高级查询,您可以在其中搜索特定包或 类 中的结果。

已升级到 Android Studio 1.3 版。它完全按照我的意愿显示了关于隐式 toString() 的警告!