假设这段代码:
public class Int {
public int value;
public Int () {
this.value = 0;
}
public Int (int value) {
this.value = value;
}
@Override
public String toString () {
return Integer.valueOf (this.value).toString ();
}
}
使用公共(public)属性,我可以使用以下方式访问属性的值:
Int a = new Int ();
int x = a.value;
我想问一下有没有办法做到这一点:
Int a = new Int (3);
Int b = new Int (11);
int x = a + b;
而不是:
...
int x = a.value + b.value;
编辑
对不起,我错了!我知道Java不支持运算符重载。我写了不好的例子。
Int a = new Int (12);
int x = a.value;
有没有办法可以这样写上面的代码?
Int a = new Int (12);
int x = a;
所以,我要问的是是否可以访问类的特定属性而省略属性名称。
最佳答案
除了 Java 不支持用户指定的运算符重载之外,也没有任何机制可以执行 auto-(un)boxing有你自己的类(class)。
自动(取消)装箱仅适用于 8 个标准包装类(Boolean
、Byte
、Short
、Character
、Integer
、Long
、Float
和 Double
)如 paragraph 5.1.7 中定义。和 5.1.8 Java 语言规范。
所以没有办法让这个工作:
// Your own class Int
class Int { ... }
Int x = new Int(12);
int y = x; // auto-unboxing, not possible with Int
关于Java - 获取类中属性的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30152149/