所以我的任务中有一项任务如下:
AirCraft是一个PublicTransportation,它还具有以下内容:类类型(枚举类型可以是:直升机,航空公司,滑翔机或气球)和维护类型(枚举类型可以是:每周,每月或每年)
我们还没有真正涵盖枚举,但我正在努力了解它。我知道它们是常量列表(静态和最终)。我只是不知道如何在我的驱动程序类中初始化枚举参数。
public class Aircraft extends PublicTransportation
{
private enum ClassType {HELICOPTER, AIRLINE, GLIDER, BALLOON}
private enum MaintType {WEEKLY, MONTHLY, YEARLY}
private ClassType cType;
private MaintType mType;
public Aircraft()
{
super();
cType = null;
mType = null;
}
public Aircraft(double ticketPrice, int numOfStops, ClassType cType, MaintType mType)
{
super(ticketPrice, numOfStops);
this.cType = cType;
this.mType = mType;
}
public Aircraft(Aircraft anAircraft)
{
super(anAircraft.getTicketPrice(), anAircraft.getNumOfStops());
this.cType = anAircraft.cType;
this.mType = anAircraft.mType;
}
}
这是我的驱动程序类的一部分:
package Driver;
import CityBus.CityBus;
import CityBus.Metro;
import CityBus.Tram;
import Ferry.Ferry;
import Aircraft.Aircraft;
import Aircraft.Aircraft;
import PublicTransportation.PublicTransportation;
public class Driver
{
public static void main(String[] args)
{
Aircraft ac1 = new Aircraft(1,2, GLIDER, Aircraft.GLIDER);
如何初始化枚举类型?
答案 0 :(得分:4)
将声明更改为
public static enum ClassType {HELICOPTER, AIRLINE, GLIDER, BALLOON}
public static enum MaintType {WEEKLY, MONTHLY, YEARLY}
并在你的驱动程序类中
Aircraft ac1 = new Aircraft(1,2, Aircraft.ClassType.GLIDER, Aircraft.MaintType.WEEKLY);
我通过猜测滑翔机每周获得维护来修复Aircraft
构造函数调用中的问题: - )
如果您不想输入完全限定的枚举常量,可以在文件顶部import static
:
import static Aircraft.ClassType.*;
import static Aircraft.MaintType.*;
然后使用枚举常量而无需限定。但是,正如@LewBloch在评论中指出的那样,静态导入会降低代码的可读性。我自己对他们的使用有些矛盾。在特定情况下,如果代码中有足够的文档/警告,它们就会很有用。我一般都避开它们。我把它们包括在内只是为了完整,而不是作为背书。