如何从另一个类打印行

Posted

技术标签:

【中文标题】如何从另一个类打印行【英文标题】: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 的输出”是什么意思?你想完成什么? 【参考方案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) 上发送消息,并在其他客户端发送消息时接收它们。

以上是关于如何从另一个类打印行的主要内容,如果未能解决你的问题,请参考以下文章

从另一个类获取原始变量名[重复]

python - kivy:从另一个类调用函数

如何从另一个 ViewController 中选择 UITableViewController 行?

如何使用第一个表中的逗号分隔值从另一个表中选择行? [复制]

如何从另一个类调用方法函数?

如何从另一个类调用@selector 方法