gpt4 book ai didi

java - 按枚举类型初始化参数

转载 作者:行者123 更新时间:2023-11-30 06:49:45 25 4
gpt4 key购买 nike

因此,我的任务分配如下:

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);

如何初始化枚举类型?

最佳答案

将声明更改为

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 在评论中指出的那样,静态导入会降低代码的可读性。我自己对它们的使用有些矛盾。在特定情况下,如果代码中有足够的文档/警告,它们可能会有用。我通常会避开它们。我将它们包括在内只是为了完整性,而不是作为认可。

关于java - 按枚举类型初始化参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42286829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com