将2个类的数据放入一个包含2个包的数组中

时间:2009-10-07 12:45:09

标签: java arrays

确定。

由于我的困惑已经消失,我想我的问题可能是错误的。

我在一个包中有“GenericMessage”“email”和“fax”类。

“email”和“fax”中有一个变量,即String。

所有上述类都在名为“Message”的包中。

现在我创建了一个名为“Outbox”的新包 它包含一个String数组,并且正在尝试将“传真”和“电子邮件”中的字符串转换为一个数组。

 package Outbox;

public class Outbox extends GenericMessage
{
 GenericMessage messageList[];

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

我的问题是我不能从其他包中调用Generic Message。 我该怎么做?

5 个答案:

答案 0 :(得分:2)

EmailFax

生成公共基类
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数组:

Message[] messageList;

答案 1 :(得分:2)

和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的代码;)

答案 2 :(得分:1)

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

或者您可以创建类型为Object的数组(因为Java中的所有对象都具有此公共基类)。这里的缺点是你不能再看到数组中的内容了。它可能是任何东西。当你开始使用数组时,这会让你感到困惑:你需要经常使用instanceof来确定你得到了什么,以及你可以用它做什么。

答案 3 :(得分:1)

出于好奇:这会编译吗?一个具有相同名称的类中的两个变量和一个具有相同名称的函数的两个参数?

package Outbox;

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

答案 4 :(得分:0)

package Outbox;
// >> this was the missing piece
import Message.*;

public class Outbox
{
 GenericMessage messageList[];

 public Outbox (GenericMessage [] messageList )
 {
     messageList = new GenericMessage[50];
 }
}
没关系。我找到了导入命令