首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在数组中存储2个不同的对象

在数组中存储2个不同的对象
EN

Stack Overflow用户
提问于 2015-12-23 14:16:06
回答 5查看 2K关注 0票数 2

如何在数组中存储两个不同的对象?例如,当我有对象工作人员(“名称”、“年龄”、薪资)时,另一个对象是计算机(“价格”、“规范”、“.”)。我将这些对象存储在一个类中。

代码语言:javascript
复制
class Record
{
  top = -1;
  private Worker array_w[];
  private Computer array_c[];

但我必须这样做:

代码语言:javascript
复制
 public void insert(Worker number) {
    if ((top + 1) < array_w.length)
     { top += 1; array_w[top] = number; }

 public void insert(Computer number) {
    if ((top + 1) < array_c.length)
     { top += 1; array_c[top] = number; }
 }

将每个对象插入到新类中。

我如何制作它,以便只有一个数组存储任何对象。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-12-23 14:25:52

我建议不要混合对象,但是如果必须有一个数组,那么可以做一些事情:

让两个对象继承同一个对象,或者实现相同的接口:

代码语言:javascript
复制
public class Worker extends MyMainClass
public class Computer extends MyMainClass

代码语言:javascript
复制
public class Worker implements IMyInterface
public class Computer implements IMyInterface

然后你就有:

代码语言:javascript
复制
MyMainClass[] myArray;

代码语言:javascript
复制
IMyInterface[] myArray;

(最好是接口)

或者,如果工作人员和计算机并驾齐驱,则编写一个包装器并将两者插入相同的索引中。

代码语言:javascript
复制
public class Wrapper {
    private Worker worker;
    private Computer computer;
    ...
}

public void insert(Wrapper wrapper) {
    ...
}

然后你有一个数组:

代码语言:javascript
复制
Wrapper[] myArray;
票数 6
EN

Stack Overflow用户

发布于 2015-12-23 14:20:39

这不是一个好的设计,但如果你想那么做,你可以做的是

首先创建一个接口:

代码语言:javascript
复制
public interface MarkerInterface {
    public String print();
}

然后使用它来实现两个类。

代码语言:javascript
复制
public class Worker implements MarkerInterface {
   ...
   @Override 
   public String print() {
       return "worker class what ever you want to print"
   }
}

public class Computer implements MarkerInterface {
   ...
   @Override 
   public String print() {
       return "computer class what ever you want to print"
   }
}

现在,在记录类中创建一个数组。

代码语言:javascript
复制
public class Record
{
    MarkerInterface[] objects = new MarkerInterface[10];
    ...
}

现在,您可以实例化MarkerInterface类型的数组并存储这两个数组。

记住,当您想要使用对象数组时,您需要这样做。

代码语言:javascript
复制
if(obj isinstanceof Computer) {...} else if(obj isinstanceof Worker) {...} 

或者,如果方法是在接口中定义的,那么您可以简单地

代码语言:javascript
复制
System.out.println(obj.print());
票数 3
EN

Stack Overflow用户

发布于 2015-12-23 14:20:31

我假设您在计算机和工人类之上有一个公共接口或类。如果是这样的话,你可以这样做:

代码语言:javascript
复制
 MyTopInterface[] array = ..

现在,您只需使用相同的数组,并在其中填充工作人员或计算机对象。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34437594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档