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函数,我不知道是哪个。