具有有限选项的自定义数据类型,在 Java 中
Custom data type with limited options, in Java
尝试创建自定义(用户定义的)数据类型,who 的值可能只能是几个选项之一,例如不同的状态。类似于:
trafficLight = [ "red" | "amber" | "green" ];
或者
coin = [0.01 | 0.02 | 0.05 | 0.1 | 0.2 | 0.5 | 1 | 2];
在这些示例中,我猜想 trafficLight
只是选项有限的 String
,类似地,coin
和 int
。
我想我需要 class 这些新数据类型,但我如何限制分配给这些自定义数据类型的变量的可能值?
您可以使用枚举
public enum TrafficLight {
RED, AMBER, GREEN;
}
根据https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
由于枚举既不是 String
也不是 int
你必须将它映射到你想要的类型,这可以通过几种不同的方式完成,例如通过调用现有 String toString()
或定义自定义 int getValue()
方法。
使用枚举怎么样。以下是如何使用它的示例。通过使用枚举作为方法的参数,您可以将值限制为仅枚举允许的值。
public class MyNewType {
public void someMethod(TrafficLight tl, Coin coin) {
//do something
}
public static enum TrafficLight {
red, amber, green;
}
public static enum Coin {
oneCent(.01f), twoCent(.02f), fiveCent(.05f), tenCent(.1f), fiftyCent(.5f), oneDollar(1f), twoDollar(2f);
private Coin(float amount) {
this.amount = amount;
}
float amount;
}
}
尝试创建自定义(用户定义的)数据类型,who 的值可能只能是几个选项之一,例如不同的状态。类似于:
trafficLight = [ "red" | "amber" | "green" ];
或者
coin = [0.01 | 0.02 | 0.05 | 0.1 | 0.2 | 0.5 | 1 | 2];
在这些示例中,我猜想 trafficLight
只是选项有限的 String
,类似地,coin
和 int
。
我想我需要 class 这些新数据类型,但我如何限制分配给这些自定义数据类型的变量的可能值?
您可以使用枚举
public enum TrafficLight {
RED, AMBER, GREEN;
}
根据https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
由于枚举既不是 String
也不是 int
你必须将它映射到你想要的类型,这可以通过几种不同的方式完成,例如通过调用现有 String toString()
或定义自定义 int getValue()
方法。
使用枚举怎么样。以下是如何使用它的示例。通过使用枚举作为方法的参数,您可以将值限制为仅枚举允许的值。
public class MyNewType {
public void someMethod(TrafficLight tl, Coin coin) {
//do something
}
public static enum TrafficLight {
red, amber, green;
}
public static enum Coin {
oneCent(.01f), twoCent(.02f), fiveCent(.05f), tenCent(.1f), fiftyCent(.5f), oneDollar(1f), twoDollar(2f);
private Coin(float amount) {
this.amount = amount;
}
float amount;
}
}