有許多你可以做到這一點。最簡單的是將對象傳遞給方法在B類:
public void doSomething(JTextField fieldToUpdate){
//your logic here
fieldToUpdate.setText("something");
}
然後,你可以直接更新fieldToUpdate
。這不是一個很好的設計模式,因爲它將一個類所擁有的變量直接暴露給另一個類。
另一種方法是A類的實例傳遞到方法,並呼籲公衆方法就可以了:
public void doSomething(A aInstance){
//your logic here
aInstance.setText("something");
}
然後在A類你需要定義
public void setText(String text){
txtField1.setText(text);
}
這是稍好一些,因爲B類不能直接訪問A類內部。
一個更封裝的響應(雖然這可能是過度簡單的)細接口,並通過一個實現中類B的接口的方法的類的一個實例:
public void doSomething(TextDisplayer txt){
//your logic here
txt.setText("something");
}
然後在此類一個:
public class A implements TextDisplayer{
public void setText(String txt){
txtField1.setText(txt);
}
}
則接口:
public interface TextDisplayer{
public void setText(String txt);
}
這種方法的優點是它使類B與類A完全分離。所有它關心的是它傳遞了一些知道如何處理setText方法的東西。再次,在這種情況下,它可能是矯枉過正,但它是讓你的課儘可能分離的方法。
謝謝你的回答。如果aInstance位於循環內部怎麼辦?我如何確保它從setText方法返回doSomething方法? – jadrijan