java - 我可以设置一个类,比如 class = 8

标签 java types

对于标题措辞不当,我深表歉意,但我找不到更好的方式来描述我的问题。

我正在制作一个自定义 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 中定义的包装类的预设列表。 .

该列表包括BooleanByteShortCharacterInteger , Long, Float, Double.

关于java - 我可以设置一个类,比如 class = 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23442563/

相关文章:

java - 请求大小为 0 的 Android Java Sqlite 异常索引 0

c - 为什么 x - y 在这个函数中不会溢出 TMin?为什么在这种情况下功能错误?

java - 按键监听器不工作

java - 如何压缩文件夹并在android中通过电子邮件发送

JavaFX8 - 从不同线程引用 FXML 对象

sql-server - 存储和映射货币汇率

class - 获取 Haxe 中具有空值的类字段的类型

解构赋值中的 typescript 松散打字

go - 使用来自其父级的方法更改嵌入式结构的属性

java - 调用 `new Date(long)` 结果是 "Jan 01 01:00:00 CET 1970"?