返回多个java类
因此,我试图为一个游戏编写一个API,我创建了4个不同的类,分别命名为ShipScanStage0、ShipScanStage1、ShipScanStage2、ShipScanStage3,我想在这个类中返回它们
我试图将getScanStageInfo的返回类型设置为Object,但这不是我所寻找的解决方案,我希望API用户能够以一种简洁的方式访问scanStage并使用它的信息
ShipTargetedEvent.java
package org.xenodev.edj.events;
import org.xenodev.edj.Event;
import org.xenodev.edj.events.storage.ShipScanStage0;
public class ShipTargetedEvent extends Event {
int scanStage;
public ShipTargetedEvent(String timestamp, int scanStage) {
super(timestamp);
this.scanStage = scanStage;
}
public void getScanStageInfo() {
if(scanStage == 0) {
return new ShipScanStage0();
}else if(scanStage == 1) {
return new ShipScanStage1();
}else if(scanStage == 2) {
return new ShipScanStage2();
}else if(scanStage == 3) {
return new ShipScanStage3();
}
}
}
我想实现用户只能访问StageScan级别的信息,因为如果scanStage级别为2,并且他们访问scanStage级别3类,他们将有一些未初始化的变量,因为游戏没有提供这些信息
# 1 楼答案
有多种方法可以实现这一点,一种常见的方法是使用composite pattern来抽象实现并返回根接口。在实施过程中,它看起来像:
定义一个公共接口
在后台有不同的实现方式:
基于返回的业务逻辑分析
# 2 楼答案
如果您说每个
ShipScanStage
类型的对象都是相似的,那么它的功能就足够相似了如果是这种情况,那么这些对象中的每一个都应该从抽象类扩展,或者实现一个接口
。。。然后,实际上必须从方法返回抽象类型或接口
假设抽象类或接口名为
ShipScanStage
,则方法的签名为: