java - 检测对象是否覆盖了 toString()

标签 java reflection overriding

<分区>

我收到一个对象并需要记录它。其中一些有自定义 toString() 然后我想使用它,但有些没有,我得到类似 mightypork.rogue.bus.events.MouseMotionEvent@2d19587d

我正在寻找一种方法来动态地(也许通过反射?)检查传入的对象是否有 toString() 自身被覆盖。

String objToString(Object o)
{
    if(???) {
        return o.toString();
    } else {
        // fallback method
        return o.getClass().getSimpleName();
    }

}

边注:

它是一个事件总线系统,一些类可以根据实现的接口(interface)订阅然后接收事件。我不可能要求所有客户端都具有 toString(),而且我想将此方法用于不止一个目的。

最佳答案

如果您使用Object getClass() 方法,您可以使用该类并调用getMethod().getDeclaringClass() 方法。如果它是 Object,则它不会被覆盖。否则,沿线的某处被覆盖。 Source

关于java - 检测对象是否覆盖了 toString(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22866925/

相关文章:

java - 黑莓应用程序显示空白屏幕

java - Java 中的 getConstructor 抛出 NoSuchMethodException

c# - 在运行时使用反射获取类实例的属性 C#

ios - 是否可以在没有继承的情况下覆盖类上的 drawRect?

java - Keybinders 可以实现 keyPressed 和 keyReleased 方法吗?

java - 使用 TextView 获取空指针

c# - 在 C# 中使用反射在运行时加载类型

html - 自定义 CSS 覆盖在 ASP.NET MVC 中不生效

c++ - 在构造函数中调用虚函数

java - 将反射与 Realm 结合使用 (Android)