是否可以使 Java 对象 'reflect' 成为原始类型?

Is it possible to make a Java object 'reflect' a primitive type?

假设我有以下 class:

public class Value
{
    private String label;
    private double value;

    public Value(String label, double value)
    {
        this.label = label;
        this.value = value;   
    }

    public double getValue()
    {
        return this.value;
    }
}

现给出以下实例:

Value v1 = new Value("first value", 5);
Value v2 = new Value("first value", 6);

有什么方法可以别名吗

double sum = v1.getValue() + v2.getValue();

double sum = v1 + v2;

?

类像Double和Integer已经有这个功能了。那么(我们如何添加它 | 为什么我们不能添加它)到我们自己的 classes?

我们不能。在 Java 中,无法重载内置运算符。

您提到这对包装器类型(如 IntegerDouble 等)有效,但这并不完全正确。当运算符应用于此类类型时,将在后台启动一个称为拆箱的过程,以便 Double 变为 doubleInteger 变为 int等等。

正如其他人提到的,这称为 运算符重载 ,Java 不支持。此外,不要将它与 IntegerDouble 的默认拆箱相混淆。

如果在对象上调用 getter 方法对您来说是个大问题,我建议您创建两个方法,例如:

private double add(Value... values){
    double sum = 0;
    for(Value val: values) 
        sum += val.getValue();
    return sum;
}
private double multiply(Value... values){
    double product = 1;
    for(Value val: values) 
        sum *= val.getValue();
    return product;
}

等等...

所以现在你可以

double sum = add(v1,v2,v3,v4);
double product = multiply(v1,v2,v3);

等等...

我认为这与您的要求最接近。