Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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
Android/Java:有没有存储方法的方法?_Java_Android_Methods - Fatal编程技术网

Android/Java:有没有存储方法的方法?

Android/Java:有没有存储方法的方法?,java,android,methods,Java,Android,Methods,我有一个循环类,基本上如下所示: public class Loop extends Thread { private boolean running; public Loop() { running = false; } public void run() { while(running) { //Do stuff } } public void setRunning(

我有一个循环类,基本上如下所示:

public class Loop extends Thread {
    private boolean running;

    public Loop() {
        running = false;
    }

    public void run() {
        while(running) {
            //Do stuff
        }
    }

    public void setRunning(boolean b) {
        running = b;
    }
}
我想知道的是是否可以存储方法。例如,该类可以改为如下所示

public class Loop extends Thread {
    private boolean running;
    private Method method;

    public Loop() {
        running = false;
    }

    public void run() {
        while(running) {
            if(method != null)
                method.callMethod();
        }
    }

    public void setRunning(boolean b) {
        running = b;
    }

    public void setMethod(Method m) {
        method = m;
    }
}

这样做可能吗?

我假设您希望在Java 6中使用此功能,因此可以使用
接口
匿名类

接口代码:

public interface Listener {
    void callMethod();
}
public class Loop extends Thread {
    private boolean running;
    private Listener listener;

    public Loop() {
        running = false;
    }

    public void run() {
        while(running) {
            if(listener != null)
                listener.callMethod();
        }
    }

    public void setRunning(boolean b) {
        running = b;
    }

    public void setListener(Listener listener) {
        this.listener = listener;
    }
}
Loop loop = new Loop();

loop.setListener(new Listener() {
    @Override
    public void callMethod() {
    // Do stuff
    }
});
你的帖子:

public interface Listener {
    void callMethod();
}
public class Loop extends Thread {
    private boolean running;
    private Listener listener;

    public Loop() {
        running = false;
    }

    public void run() {
        while(running) {
            if(listener != null)
                listener.callMethod();
        }
    }

    public void setRunning(boolean b) {
        running = b;
    }

    public void setListener(Listener listener) {
        this.listener = listener;
    }
}
Loop loop = new Loop();

loop.setListener(new Listener() {
    @Override
    public void callMethod() {
    // Do stuff
    }
});
设置侦听器:

public interface Listener {
    void callMethod();
}
public class Loop extends Thread {
    private boolean running;
    private Listener listener;

    public Loop() {
        running = false;
    }

    public void run() {
        while(running) {
            if(listener != null)
                listener.callMethod();
        }
    }

    public void setRunning(boolean b) {
        running = b;
    }

    public void setListener(Listener listener) {
        this.listener = listener;
    }
}
Loop loop = new Loop();

loop.setListener(new Listener() {
    @Override
    public void callMethod() {
    // Do stuff
    }
});

这将适用于您的用例。如果要保存方法并将方法作为数据传递,则必须使用Java8(并非所有Android API级别都支持)或Kotlin

我假设您希望在Java 6中使用此功能,因此可以使用
接口
匿名类

接口代码:

public interface Listener {
    void callMethod();
}
public class Loop extends Thread {
    private boolean running;
    private Listener listener;

    public Loop() {
        running = false;
    }

    public void run() {
        while(running) {
            if(listener != null)
                listener.callMethod();
        }
    }

    public void setRunning(boolean b) {
        running = b;
    }

    public void setListener(Listener listener) {
        this.listener = listener;
    }
}
Loop loop = new Loop();

loop.setListener(new Listener() {
    @Override
    public void callMethod() {
    // Do stuff
    }
});
你的帖子:

public interface Listener {
    void callMethod();
}
public class Loop extends Thread {
    private boolean running;
    private Listener listener;

    public Loop() {
        running = false;
    }

    public void run() {
        while(running) {
            if(listener != null)
                listener.callMethod();
        }
    }

    public void setRunning(boolean b) {
        running = b;
    }

    public void setListener(Listener listener) {
        this.listener = listener;
    }
}
Loop loop = new Loop();

loop.setListener(new Listener() {
    @Override
    public void callMethod() {
    // Do stuff
    }
});
设置侦听器:

public interface Listener {
    void callMethod();
}
public class Loop extends Thread {
    private boolean running;
    private Listener listener;

    public Loop() {
        running = false;
    }

    public void run() {
        while(running) {
            if(listener != null)
                listener.callMethod();
        }
    }

    public void setRunning(boolean b) {
        running = b;
    }

    public void setListener(Listener listener) {
        this.listener = listener;
    }
}
Loop loop = new Loop();

loop.setListener(new Listener() {
    @Override
    public void callMethod() {
    // Do stuff
    }
});

这将适用于您的用例。如果要保存方法并将方法作为数据传递,则必须使用Java8(并非所有Android API级别都支持)或Kotlin

尝试使用反射调用方法。您想要反射或Java 8函数,我不知道是哪个。尝试使用反射调用方法。您想要反射或Java 8函数,我不知道是哪个。