对于标题措辞不当,我深表歉意,但我找不到更好的方式来描述我的问题。
我正在制作一个自定义 Degree 类,它只会包含 0 到 360 之间的任何数字,任何更高的添加都将被解析为它们的 0-360 等效值。我想知道是否有可能做原始类型做的事情,即 Int a = 1。
我怀疑这是可能的,但如果是,我该怎么做呢?
最佳答案
这就是您所描述的在 Java 中的样子。您将必须创建一个代表您学位的包装类。然而,在内部,我们将只使用 Integer
对象(或者 int
原语可以正常工作)。
public class Degree {
private Integer degrees;
// Constructor, takes an Integer object or int primitive
public Degree(Integer deg){
setDegrees(deg);
}
// Get degrees from your wrapper object
public Integer getDegrees(){
return degrees;
}
// Set degress of your wrapper object
public void setDegrees(Integer deg){
if(deg<361 && deg>-1){ degrees = deg; }
else if(deg>360){ degrees = 360; }
else if(deg<0){ degrees = 0; }
}
}
要在其他地方的代码中使用它,您只需使用;
Degree d = new Degree(31);
您可能想要 override the toString();
method以及 equals();
方法,以便于使用新的 Degree
类。我希望这会有所帮助。
编辑:声明一个类并使用 =
运算符将其声明为原语的行为称为自动装箱。自 Java 5 以来可能存在的行为,但仅适用于 Java 5 specification 中定义的包装类的预设列表。 .
该列表包括Boolean
、Byte
、Short
、Character
、Integer
, Long
, Float
, Double
.
关于java - 我可以设置一个类,比如 class = 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23442563/