将Class <?> cls作为方法参数传递?

布兰尼奥

我在完成此方法时遇到麻烦。

我正在尝试编写一种方法,该方法将使我的主要对象传递两个参数:一个Talker对象实例,一个cls类对象代表侦听器应该从中扩展以便接收消息的类型。我是Java的新手,可以在此方面提供一些帮助。

这是该方法的代码:

public void sMessage(Talker talker, Class<?> cls) {
    for ( Listener l : mParticipants)
    {
        if (cls.isAssignableFrom(cls.getSuperclass())) {
            l.onMessageReceived(talker.getMessage());   
        }
    }
}

不知道如何完成此操作,或如何从main拨打电话:

singletonDemo.sMessage(demoTalker, Class?);

并没有真正按照我到目前为止所看到的示例进行操作。有什么建议?

规范

@BornToCode关于调用该方法是正确的,但是您要使用该方法实现的目标仍然有些错误。

cls.isAssignableFrom(cls.getSuperclass())

将始终返回false。这是因为您不能接受父类并将其分配给子类。我相信您正在寻找的是一种检查侦听器是否扩展了指定类的方法。您可以通过获取侦听器的类来实现。

cls.isAssignableFrom(l.getClass())

或更简单

cls.isInstance(l)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章