Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何发送、接收和存储对外部方法的引用_Java_Android - Fatal编程技术网

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大量使用了它。谢谢你的输入,但我知道如何声明方法。。。抽象变量只能由抽象类定义,但事实并非如此,我正在处理视图和活动。我不知道你是否正确理解我的问题。我将对其进行编辑以使其更清晰。再次感谢!