,我與它的問題:在主類我創建了一個對象獲取對象的其他類instancied在Java中
District d = new District(district, sequence);
這個主類創建另一個線程。
該線程時訪問對象的實例無法做到這一點,只有當變量是靜態的,因爲如果不是,出現此消息:非靜態變量不能從靜態上下文引用。
我的問題是:我不能使用靜態字段,並且我在Main類中有一個無限循環,也就是說我也不能使用get方法。
如何訪問在主類中創建的對象?或者,另一方面,爲什麼我不能使用非靜態字段訪問參數?
請考慮此之外的任何解決方案成爲可能,甚至創造新的類/方法/變量。
Output output = new Output(client);
Thread to = new Thread(output);
to.start();
++i;
}
while(true){
for(i = 0; i < neighborhood.size(); ++i){
//rand.nextInt((max+1) - min) + min;
Edge edge = new Edge(id, neighborhood.get(i),
rand.nextInt((10 + 1) - 1) + 1);
district.add(edge);
}
District d = new District(district, sequence);
++sequence;
Thread.sleep(5000);
}
和螺紋:
public class Output implements Runnable {
private Socket client;
// Construtor do metódo
Output(Socket client) {
this.client = client;
}
@Override
public void run() {
// Obtendo os objetos de controle do fluxo de comunicação
ObjectOutputStream output = null;
try {
output = new ObjectOutputStream(client.getOutputStream());
} catch (IOException ex) {
Logger.getLogger(Input.class.getName()).log(Level.SEVERE, null, ex);
}
while(true){
District district = new District(District.district, District.sequence);
try {
output.writeUnshared(district);
System.out.println("Objeto enviado");
output.flush();
output.reset();
} catch (IOException ex) {
Logger.getLogger(Output.class.getName()).log(Level.SEVERE, null, ex);
}
try {
Thread.sleep(5000);
} catch (InterruptedException ex) {
Logger.getLogger(Output.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
感謝。
對不起,你有一些很多downvotes沒有任何解釋。但可能是因爲你沒有發佈你遇到的代碼。有實際的代碼來檢查是非常重要的。請閱讀[this](http://stackoverflow.com/help/mcve)獲取有關如何以一種方式發佈代碼的有用提示,以便您獲得更好的幫助。祝你好運。 – sstan
現在添加代碼,謝謝。 – user3294746
你快到了。你能確保至少發佈整個班級和方法嗎?例如,在你的第二塊中,我不清楚這是'Runnable'還是'Thread'的'run'方法或別的東西。我會檢查。 – sstan