【问题标题】:How to pass objects between two Java classes with main如何使用 main 在两个 Java 类之间传递对象
【发布时间】:2014-03-19 19:45:46
【问题描述】:

基本上我在一个程序中创建一个自定义对象并在一个程序中使用值进行实例化,然后我创建另一个程序并希望打印实例化的对象输出。

import java.util.Scanner;
class example {
    int value;
    String name;
    String city;
}
public class Yummy21 {
    static example[] obj=new example[3];
    static Scanner input=new Scanner(System.in);
    public static void main(String args[])
    {
        init();
    }
    public static void init()
    {
        for(int i=0;i<3;i++)
        {
            obj[i]=new example();
        }
        for(int i=0;i<3;i++)
        {
            System.out.println("for the object "+i+" enter the name ");
            obj[i].name=input.next();
            System.out.println("for the object "+i+" enter the city ");
            obj[i].city=input.next();
            System.out.println("for the object "+i+" enter the name ");
            obj[i].value=input.nextInt();
        }
    }
}

还有下一个节目:

public class Yummy22 extends Yummy21 {
    public static void main(String args[])
    {
        for(int j=0;j<3;j++)
        {
            System.out.println("the value of the object["+j+"].name is "+obj[j].name);
        }
    }
}

第一个程序工作正常,这意味着它接受值,第二个程序显示NullPointerException

【问题讨论】:

  • 您打算如何在这两个程序之间传递数据?
  • 您是否认为obj 为空?为什么?因为你从来没有初始化它。你的代码以什么方式构成两个程序?
  • 当你运行 Yummy21 时,数据被创建,然后在程序结束时被丢弃。该程序与 Yummy22 的执行无关。如果您需要保留 Yummy21 生成的数据,那么您需要按照 Tyson Moncrief 的建议将其保存到某种长期存储中,例如文件。
  • 感谢@dorr,我想这是唯一的解决方案!!!

标签: java class inheritance argument-passing


【解决方案1】:

Yummy22.main 不会调用 Yummy21.init。也许放一个

static { init(); }

在美味 21 中。

话虽如此,这 3 个类是 Java 的可憎之物。请至少遵循命名约定。 example 类应该是 Example。最好使用对象级字段、构造函数和非静态成员对所有这些进行编码

【讨论】:

  • @Krib ythanks,但请注意,这是我实际实现的一个非常简单的版本,我不想调用 init() 并再次运行整个过程。我必须完全模块化
  • 如果这不是您遇到问题的代码,请发布该代码。
  • 真正的运行多达 700 行并涉及位数学
  • pgm1 init() - 从用户那里取值,calculalte() 执行计算 pgm2 使用 javafx 显示输出。所以现在你明白为什么需要传递实例化的对象了。 @柯比
【解决方案2】:

将程序1中的数据序列化并写入磁盘,然后从程序2中读取。

【讨论】:

  • 我考虑过使用数据库,甚至将它们作为字符串传递,但任何更简单、更准确的方法@Tyson Moncrief
  • 不确定您所说的更准确的方法是什么意思。你建立的继承模型真的什么都没有。当您执行程序 1 和程序 2 时,它们在不同的域中执行,根本不共享资源。一旦程序 1 的最后一行完成,存储在 obj 中的值就消失了。您必须以某种方式持久化数据,并且写入文件似乎是最简单的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
  • 2017-04-03
  • 1970-01-01
相关资源
最近更新 更多