Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用2个包将2个类中的数据放入一个数组_Java_Arrays - Fatal编程技术网

Java 使用2个包将2个类中的数据放入一个数组

Java 使用2个包将2个类中的数据放入一个数组,java,arrays,Java,Arrays,嗯 既然我的困惑已经消除,我想我可能把问题的措辞弄错了 我将“GenericMessage”、“email”和“fax”类放在一个包中 “email”和“fax”中有一个变量是字符串 上述所有类都位于名为“Message”的包中 现在我已经创建了一个名为“发件箱”的新包 它包含一个字符串数组,并且正在尝试将“传真”和“电子邮件”中的字符串放入一个数组中 package Outbox; public class Outbox extends GenericMessage { GenericM

既然我的困惑已经消除,我想我可能把问题的措辞弄错了

我将“GenericMessage”、“email”和“fax”类放在一个包中

“email”和“fax”中有一个变量是字符串

上述所有类都位于名为“Message”的包中

现在我已经创建了一个名为“发件箱”的新包 它包含一个字符串数组,并且正在尝试将“传真”和“电子邮件”中的字符串放入一个数组中

 package Outbox;

public class Outbox extends GenericMessage
{
 GenericMessage messageList[];

 public Outbox (GenericMessage [] messageList )
 {
     messageList = new GenericMessage[50];
 }
}
我的问题是,我无法从另一个包调用通用消息。
如何做到这一点?

电子邮件
传真

public class Message {
  //common fields and methods
}

public class Email extends Message {
  // email-specific fields and methods
}

public class Fax extends Message {
  // fax-specific fields and methods
}
然后只需使用
消息
数组:

Message[] messageList;

就像Joachim Sauer,但有点不同:

引入一个接口。这很好,因为每个子类都必须实现这个接口的方法

public interface Message {
  //methods that must be implemented
}

public class Email implements Message {
  // email-specific fields and methods
}

public class Fax implements Message {
  // fax-specific fields and methods
}

Message[] messageList;

感谢Joachim提供的代码;)

数组中的所有元素必须具有相同的类型。因此,第一步是确保:创建公共基类(或接口)并创建该类型的数组。然后可以将任意一种类型放入数组中


或者您可以创建一个类型为
Object
的数组(因为Java中的所有对象都有这个公共基类)。这里的缺点是,您无法再看到阵列中的内容。它可能是任何东西。当你开始使用数组时,这会对你产生影响:你需要大量使用
instanceof
来确定你得到了什么以及你能用它做什么。

只是出于好奇:这会编译吗。。。类中的两个变量具有相同的名称,函数的两个参数具有相同的名称

package Outbox;

public class Outbox
{
    Email messageList[];
    Fax messageList[];
    public Outbox (Email [] messageList,Fax [] messageList)
    {
        //whatever
    }
}

没关系。我找到了导入命令

否。只是一些修改。但从未教过如何将来自不同类的两个变量放入一个数组。“我一直在尝试创建一个数组,从两种类型的类中获取数据。”您想要一个包含多种类型的类的单数组,还是想要一个包含来自多个类的数据的单数组?你说的是后面的,但我们认为你的意思是,我也想要从两个类中获取数据,并将其传递到另一个类中的一个数组中。我的传真包含一个字符串,我的电子邮件包含一个字符串。我也希望将两个字符串存储在一个名为outbox的类中的一个数组中。那么,只需要一个字符串数组。有趣的是,下面所有的答案都是针对一个不同的问题。您可能想更新您的问题并告知此更改的答案。但是它不需要也从子类中获取变量吗?不仅仅是方法?这不要求他能够更改电子邮件和传真吗?@OVERTONE接口没有字段。我的意思是,你假设他有传真和电子邮件的来源,并且他可以更改它们。Java接口中的Aaron Digulla可以有字段。然而,在这种情况下,它们是隐式的最终、公开和静态的。这难道不要求他能够更改电子邮件和传真吗?“地址”似乎比“消息”更合适。是的。你没有在问题中说你不能修改有问题的类。你必须有一个对象[]。@Aaron:因为他调用了他的数组消息列表,我认为他在谈论消息,而不仅仅是地址。我也扩展了发件箱消息。我没有得到任何错误,但它仍然没有做我想要的。消息列表尚未定义。不,它不会编译。重复的字段名和构造函数参数名都无效。+1无法编译,Java标识符应具有唯一的全名。
package Outbox;
// >> this was the missing piece
import Message.*;

public class Outbox
{
 GenericMessage messageList[];

 public Outbox (GenericMessage [] messageList )
 {
     messageList = new GenericMessage[50];
 }
}