[英]Cant call a void method in a class in java
我正在嘗試調用另一個類中的方法,但是,出現錯誤。 我將類初始化為一個變量,但我沒有選擇調用該方法。 當我開始打字時,甚至變量都沒有出現在自動完成中。
這是我正在打電話的課程:
public class aMessageBuffer {
private Collection<Message> messageBuffer = new ArrayList<Message>();
private Collection<Integer> responseBuffer = new ArrayList<Integer>();
private boolean messageBufferFull = false;
private boolean responseBufferFull = false;
//Called by aProducerTask
public void sendMsg(String op, int val){
//place message in messageBuffer
Message msg = new Message();
msg.setValues(op,val);
messageBuffer.add(msg);
messageBufferFull = true;
//todo: notify
while (responseBufferFull == false){
//wait...
}
//remove response from responseBuffer
responseBuffer.clear();
responseBufferFull = false;
//todo: Out Response
}
}
這就是我調用它的地方:
public class aProducerTask extends Thread {
//TODO: Send Messages
private aMessageBuffer msgbuf = new aMessageBuffer();
msgbuf.sendMsg("add",3);
//TODO: Print Results
}
我在msgbuf.sendMsg("add",3);
收到錯誤msgbuf.sendMsg("add",3);
它不允許我使用該變量調用該方法
這是我的主要內容:
public class Main{
public static void main(String args[]){
new aConsumerTask().start();
new aProducerTask().start();
}
public void run() {
}
}
您應該在類 aProducerTask 中定義 run 方法。
public class aProducerTask extends Thread {
//TODO: Send Messages
private aMessageBuffer msgbuf = new aMessageBuffer();
public void run() {
msgbuf.send("add",3);
}
//TODO: Print Results
}
run
方法中調用非賦值方法。run
方法來保存你的方法調用。 然后在需要的時候創建一個新的Thread,傳入Runnable並在Thread上調用start()
。所以不是:
public class aProducerTask extends Thread {
//TODO: Send Messages
private aMessageBuffer msgbuf = new aMessageBuffer();
msgbuf.sendMsg("add",3);
//TODO: Print Results
}
而是這個:
// improve class name and have it implement Runnable
public class AProducerTask implements Runnable {
private aMessageBuffer msgbuf = new aMessageBuffer();
@Override // don't forget this!
public void run() {
msgbuf.sendMsg("add",3);
}
}
然后使用:
public new Thread(new AProducerTask()).start();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.