gpt4 book ai didi

java - 我可以在 Java 中为非基本类型编写文字初始值设定项吗?

转载 作者:行者123 更新时间:2023-11-30 07:03:33 24 4
gpt4 key购买 nike

Java 的文字初始值设定项主要用于基元(例如 int i = 2double j = 4.2),但也有某些非基元类也具有文字初始值设定项(例如,String a = "Hello"Number z = 43)。我希望实现一个类似于我编写的类中的初始化程序。我有一个扩展 NumberNumeric 类,我希望能够将其初始化为 Numeric a = 43。有什么方法可以在 Java 中完成此操作吗?如果可以,如何实现?

这是Numeric的部分源代码

public class Numeric extends Number {

private HashMap<Primitive, Number> values;
private Primitive origin;

public Numeric(byte value) {
values = new HashMap<>();
values.put(Primitive.BYTE, value);
values.put(Primitive.SHORT, (short) value);
values.put(Primitive.INT, (int) value);
values.put(Primitive.LONG, (long) value);
values.put(Primitive.FLOAT, (float) value);
values.put(Primitive.DOUBLE, (double) value);
origin = Primitive.BYTE;
}

public Numeric(short value) {
values = new HashMap<>();
values.put(Primitive.BYTE, (byte) value);
values.put(Primitive.SHORT, value);
values.put(Primitive.INT, (int) value);
values.put(Primitive.LONG, (long) value);
values.put(Primitive.FLOAT, (float) value);
values.put(Primitive.DOUBLE, (double) value);
origin = Primitive.SHORT;
}

public Numeric(int value) {
values = new HashMap<>();
values.put(Primitive.BYTE, (byte) value);
values.put(Primitive.SHORT, (short) value);
values.put(Primitive.INT, value);
values.put(Primitive.LONG, (long) value);
values.put(Primitive.FLOAT, (float) value);
values.put(Primitive.DOUBLE, (double) value);
origin = Primitive.INT;
}

public Numeric(long value) {
values = new HashMap<>();
values.put(Primitive.BYTE, (byte) value);
values.put(Primitive.SHORT, (short) value);
values.put(Primitive.INT, (int) value);
values.put(Primitive.LONG, value);
values.put(Primitive.FLOAT, (float) value);
values.put(Primitive.DOUBLE, (double) value);
origin = Primitive.LONG;
}

public Numeric(float value) {
values = new HashMap<>();
values.put(Primitive.BYTE, (byte) value);
values.put(Primitive.SHORT, (short) value);
values.put(Primitive.INT, (int) value);
values.put(Primitive.LONG, (long) value);
values.put(Primitive.FLOAT, value);
values.put(Primitive.DOUBLE, (double) value);
origin = Primitive.FLOAT;
}

public Numeric(double value) {
values = new HashMap<>();
values.put(Primitive.BYTE, (byte) value);
values.put(Primitive.SHORT, (short) value);
values.put(Primitive.INT, (int) value);
values.put(Primitive.LONG, (long) value);
values.put(Primitive.FLOAT, (float) value);
values.put(Primitive.DOUBLE, value);
origin = Primitive.DOUBLE;
}

Primitive 只是一个包含所有基本类型的基本enum

最佳答案

String 文字是 Java 中的一种特殊情况。 Number 实际上并没有文字 - 您在这里看到的是一个原语(例如 2)被自动装箱到其包装类(例如 Integer)。由于所有数字包装器都扩展了 Number,因此此分配有效(与 Object o = 4; 是合法语句的方式相同)。

但是,您无法将自己的文字添加到该语言中。您能做的最好的事情就是创建一些静态函数来生成类的新实例。

关于java - 我可以在 Java 中为非基本类型编写文字初始值设定项吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40493512/

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