java - 将未知对象传递给 Java 中的方法

标签 java

我试图将一个类的实例传递给另一个对象,但我无法让它工作。

我目前有这个:

class MyClass
{
    public void myFunc()
    {
        OtherClass bla = new OtherClass(this);
    }

    public void callback()
    {
        // code...
    }
}

class OtherClass
{
    public OtherClass(Class<?> obj)
    {
        // do some stuff...

        // Call method from obj
        Method method = obj.getMethod("callback", SomeObject.getClass());
        method.invoke(obj, SomeObject);
    }
}

但现在它给了我以下错误:

The constructor OtherClass(MyClass) is undefined

所以它希望我在构造函数中给出类名硬编码。我怎样才能使它成为泛型类型,以便它接受所有类?

最佳答案

应该是:

OtherClass bla = new OtherClass(this.getClass(), this);

还有:

public OtherClass(Class<?> clazz, Object obj)
{
    // do some stuff...

    // Call method from obj
    Method method = clazz.getMethod("callback", SomeObject.getClass());
    method.invoke(obj, SomeObject);
}

编辑

再次阅读我的代码和您的评论,这可以通过仅传递一个参数以更简单的方式完成:

OtherClass bla = new OtherClass(this);

和:

public OtherClass(Object obj)
{
    Class<?> clazz = obj.getClass();
    // do some stuff...

    // Call method from obj
    Method method = clazz.getMethod("callback", SomeObject.getClass());
    method.invoke(obj, SomeObject);
}

关于java - 将未知对象传递给 Java 中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11558687/

相关文章:

java - Eclipse 无法找到 org.sqlite.JDBC (Java)

java - 如何在 Java 中实现非阻塞 Future

java - 查看流中的下一个元素

java - 减少垃圾收集中的暂停

java - 使用Proguard从Android类中删除xml批注

java - Spring Batch配置异常

java - 我可以通过spring-roo中的xx.java修改xx_Roo_JavaBean.aj中的setter getter吗?

java - 更改焦点 JTextField 的文本

java - 在 SpringBoot 应用程序的 ControllerAdvice 中访问 HttpSession

java - Webview 中的 Facebook 身份验证