У меня есть поток, который загружает данные из HTTP. Я получаю его от 1 секунды до 10 минут, используя stream API.
После получения данных с HTTP-сервера мне нужно отправить эти данные методу в MyMainClass
. Как я могу сделать это без статического метода? Мне не нравится использовать статический метод.
public class MyMainClass {
public static void main(String[] args) {
GetData getData = new GetData();
getData.start();
}
public static void useText(String text) {
System.out.println(text);
// do something...
}
}
public class GetData extends Thread {
@Override
public void run() {
String text;
/* Download text from HTTP and save it to "text".
* Every 1 seconds to about 10 minutes using stream API.
* text= "abc...";
* If there are no errors, run method never exit.
*/
MyMainClass.useText(text);
}
}
Сделайте свой метод методом экземпляра и создайте экземпляр класса, который вы можете передать в экземпляр Thread
public static void main(String[] args) {
GetData getData = new GetData(new MyMainClass());
getData.start();
}
public void useText(String text) {
System.out.println(text);
// do something...
}
В методе run
класса GetData
вы можете использовать экземпляр MyMainClass
в качестве обратного вызова.
public GetData extends Thread {
public GetData(MyMainClass instance) {
this.instance = instance;
}
private MyMainClass instance;
@Override
public void run() {
String text;
/* Download text from HTTP and save it to "text".
* Every 1 seconds to about 10 minutes using stream API.
* text= "abc...";
* If there are no errors, run method never exit.
*/
instance.useText(text);
}
}
MyMainClass
вGetData(new MyMainClass());
? Как поток может использовать метод из начального класса (который запускает поток и основное приложение), если работает с новым экземпляром классаMyMainClass
?