如何在数组中存储两个不同的对象?例如,当我有对象工作人员(“名称”、“年龄”、薪资)时,另一个对象是计算机(“价格”、“规范”、“.”)。我将这些对象存储在一个类中。
class Record
{
top = -1;
private Worker array_w[];
private Computer array_c[];但我必须这样做:
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; }
}将每个对象插入到新类中。
我如何制作它,以便只有一个数组存储任何对象。
发布于 2015-12-23 14:25:52
我建议不要混合对象,但是如果必须有一个数组,那么可以做一些事情:
让两个对象继承同一个对象,或者实现相同的接口:
public class Worker extends MyMainClass
public class Computer extends MyMainClass或
public class Worker implements IMyInterface
public class Computer implements IMyInterface然后你就有:
MyMainClass[] myArray;或
IMyInterface[] myArray;(最好是接口)
或者,如果工作人员和计算机并驾齐驱,则编写一个包装器并将两者插入相同的索引中。
public class Wrapper {
private Worker worker;
private Computer computer;
...
}
public void insert(Wrapper wrapper) {
...
}然后你有一个数组:
Wrapper[] myArray;发布于 2015-12-23 14:20:39
这不是一个好的设计,但如果你想那么做,你可以做的是
首先创建一个接口:
public interface MarkerInterface {
public String print();
}然后使用它来实现两个类。
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"
}
}现在,在记录类中创建一个数组。
public class Record
{
MarkerInterface[] objects = new MarkerInterface[10];
...
}现在,您可以实例化MarkerInterface类型的数组并存储这两个数组。
记住,当您想要使用对象数组时,您需要这样做。
if(obj isinstanceof Computer) {...} else if(obj isinstanceof Worker) {...} 或者,如果方法是在接口中定义的,那么您可以简单地
System.out.println(obj.print());发布于 2015-12-23 14:20:31
我假设您在计算机和工人类之上有一个公共接口或类。如果是这样的话,你可以这样做:
MyTopInterface[] array = ..现在,您只需使用相同的数组,并在其中填充工作人员或计算机对象。
https://stackoverflow.com/questions/34437594
复制相似问题