Java 如何发送、接收和存储对外部方法的引用
在自定义类中,我试图执行通过参数从外部提供的函数 对我来说,重要的是不必存储对父类或类似类的任何引用,只存储要调用的方法/函数 我尝试发送一个方法作为参数,但它不起作用Java 如何发送、接收和存储对外部方法的引用,java,android,Java,Android,在自定义类中,我试图执行通过参数从外部提供的函数 对我来说,重要的是不必存储对父类或类似类的任何引用,只存储要调用的方法/函数 我尝试发送一个方法作为参数,但它不起作用 class A // var to store reference to external method private Method myMethodReference; // (says error: never used) // the setter to store the reference
class A
// var to store reference to external method
private Method myMethodReference; // (says error: never used)
// the setter to store the reference to the external method
public void setMethodReference(Method someMethod)
{
myMethodReference = someMethod;
}
public boolean someFunctionWithinMyClass()
{
// call the external method via my reference
myMethodReference(); // (says error: The method myMethodReference() is undefined)
}
另外,当我尝试从外部类设置对方法的引用时,它不起作用:
class B
public void someFunction() { Log.i("la", "la" };
instanceOfClassA.setMethodReference(someFunction); // (says error: variable someFunction not found)
因此,即使传递引用也不起作用,因为Eclipse假定someFunction是不在范围内的变量 我希望这能更好地解释它
private Method onClick;
该行上方的将生成错误
您应该这样创建或声明一个方法
public onClick(){
}
或
public abstract onClick()代码>
现在。。。。您调用了onClick()
而没有实现导致错误的onClick()
,。实际上,您需要一个参考。即使您传递了一个方法实例,Method.invoke()的第一个参数也是您要在其上调用该方法的对象。@Rebuller您能给我一个例子吗?我怎样才能使用参考资料?要清楚。我认为不可能做你想做的事。“在没有对象引用的情况下调用对象上的方法。”您需要将对该对象的引用存储在某个位置。查看您的B类示例,我看到了问题所在。Java没有。最常用于解决此问题的Java模式是匿名内部类。Android大量使用了它。谢谢你的输入,但我知道如何声明方法。。。抽象变量只能由抽象类定义,但事实并非如此,我正在处理视图和活动。我不知道你是否正确理解我的问题。我将对其进行编辑以使其更清晰。再次感谢!