更新 我一直都错了。我用我正在使用的方法阻止输出,但没有在这里添加。现在它运作良好,我可以从其他过程写。
我想知道是否有任何方法可以从外部向控制台视图打印一行。我有一个类(class1)具有onMessage方法。
public class Class1 implements MessageListener {
...
public void onMessage(Message msg) {
System.out.println(msg.getText());
}
...
}
然后我有一个带有main的类,它创建了这个类的实例,并且在执行时会触发Class1的onMessage。
public class Class2{
public static void main(String args[]) {
Class1 obj = new Class1();
...
while(!":q".equals((action = scanner.next()))){
obj.anotherAction(action);
}
...
}
}
当我尝试对象似乎被阻止时。我认为我的解决方案接近错误。也许从外部块调用println,因为它没有任何地方可以打印到。
我想了解发生了什么,我该如何解决这个问题。我的问题是使用从Class1创建Class2 main的输出。
我希望我解释得很好,我不是母语人士。
修改 现在我添加了更多编码。我现在意识到等待标准输入可能会干扰其他类的打印。我应该为输出运行外部进程吗?我怎么能在同一个控制台视图上做到这一点?
答案 0 :(得分:0)
试试这个 Class1.java
import java.util.Scanner;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.TextMessage;
public class Class1 {
public static void main(String args[]) throws JMSException {
Class2 obj = new Class2();
Scanner s=new Scanner(System.in);
Message m;
TextMessage textMessage = null;
System.out.println("Enter a message");
textMessage.setText(s.next());
m=(Message)textMessage;
obj.onMessage(m);
}
}
Class2.java
import javax.jms.*;
public class Class2 implements MessageListener{
public void onMessage(Message msg) {
System.out.println(msg.toString());
TextMessage textMessage = (TextMessage) msg;
try {
System.out.println(textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}