【问题标题】:How to print lines from another class如何从另一个类打印行
【发布时间】:2017-05-29 06:10:20
【问题描述】:

更新 我一直都错了。我用我正在使用但没有在此处添加的方法阻止了输出。现在它运行良好,我可以从其他进程中写入。

我想知道是否有任何方法可以从外部将一行打印到控制台视图。我有一个具有 onMessage 方法的类(class1)。

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 的输出。

希望我解释清楚,我不是母语人士。

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

【问题讨论】:

  • 你应该看看Looging
  • so : obj.onMessage(new Message());不管用 ?我不知道“消息”所以我现在不知道它是如何工作的
  • 是您尝试在 main 中创建 Class1() 对象时出现的问题吗?
  • 你应该添加控制台的错误信息。
  • “对象似乎被阻止”是什么意思?另外,“使用从 Class1 创建 Class2 main 的输出”是什么意思?你想完成什么?

标签: java class events printing main


【解决方案1】:

试试这个 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();

        }

    }
}

【讨论】:

  • onMessage 方法在另一个类确实发送消息时触发。我要上传我的代码,因为我第一次没有解释好
  • 好的,等待您的编辑/代码。以及有关 JMS 的更多信息,请参阅此 oracle java ee 6 教程docs.oracle.com/javaee/6/tutorial/doc/bnceh.html
  • 我认为我的问题更多是关于管理 In/Out 而不是 JMS(应用程序的其余部分运行良好)。我更新了我的帖子。谢谢!
  • 这个消息类是什么?是JMS的还是你自己创建的??
  • 确实属于JMS,我的Class1实现了javax.jms的MessageListener。我用它来创建异步消息传递。这个应用程序就像一个聊天,你有服务器和客户端。客户端在 obj.anotherAction(action) 上发送消息,并在其他客户端发送消息时接收它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-28
  • 1970-01-01
  • 2020-11-27
  • 1970-01-01
  • 2018-09-17
相关资源
最近更新 更多