如何从另一个类打印行

时间:2017-01-13 19:18:36

标签: java class events printing main

更新 我一直都错了。我用我正在使用的方法阻止输出,但没有在这里添加。现在它运作良好,我可以从其他过程写。

我想知道是否有任何方法可以从外部向控制台视图打印一行。我有一个类(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的输出。

我希望我解释得很好,我不是母语人士。

修改 现在我添加了更多编码。我现在意识到等待标准输入可能会干扰其他类的打印。我应该为输出运行外部进程吗?我怎么能在同一个控制台视图上做到这一点?

1 个答案:

答案 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();

        }

    }
}