Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.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,请查看以下代码: public class Hello { public void onSayHello() { } } public void test() { sayHello(new Hello() { public void onSayHello() { //do something } }); } public void sayHello(Hello

请查看以下代码:

public class Hello
{
    public void onSayHello()
    {
    }
}


public void test()
{
    sayHello(new Hello()
    {
         public void onSayHello()
         {
              //do something
         }
    });
}

public void sayHello(Hello hello)
{
    Toast.makeText(context, "Hello world");
    hello.onSayHello();
}
这是个好办法吗?

这是回调解决方案还是侦听器解决方案?它是如何命名的?

您正在创建一个匿名的派生类。如果您希望接收回调,则这不是首选解决方案。而是使用一个接口:

public class Hello {

    public interface OnHelloSaidListener {
        void onHelloSaid();
    }

}

public void test() {
    sayHello(new OnHelloSaidListener() {
        @Override
        public void onHelloSaid() {
            // Do somth
        }
    });
}

public void sayHello(OnHelloSaidListener callback) {
    Toast.makeText(context, "Hello world");
    callback.onHelloSaid();
}

学校作业?那个listenerListener还是callback?谢谢,回调、处理程序和listener之间的区别是什么?