我试图将一个类的实例传递给另一个对象,但我无法让它工作。
我目前有这个:
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/