java - 无需获取/设置即可访问私有(private)属性(property)

标签 java properties encapsulation private-members

<分区>

Possible Duplicate:
Absence of property syntax in Java

看下面的情况:

class Test extends Object {
    private int x;
    public getX() {return x;}
    public setX(int _x) {x = _x;}
}

如您所见,没什么特别的。但是,我想知道是否有可能以一种使用该类的人不需要使用 getX() 的方式保留“私有(private) x”,换句话说,如果我可以映射一些自动调用的变量获取和设置。

类似于 Delphi 中的“属性”。它会避免在复杂表达式中使用 setX() 和 getX() 的需要,并且会简化对谁读取表达式的理解。

例如,假设可以使用另一个标识符 xx 和 yy 来代替 get 和 set 方法。见:

import Test;
public static void main(String[] args) {
    new Test() {
        setX(10);
        setY(20);
        int z = getX() * getY() + (getY() * getY());
        System.out.println("%d", z);
    }
    // would be like this
    new Test() {
        xx = 10;
        yy = 20;
        int z = xx * yy + (yy * yy); // xx would access the method getX() automatically
        System.out.println("%d", z);
    }
}

我希望你们明白我的意思。

编辑:

卷饼!这是很多答案!非常感谢大家。

最佳答案

您可以使用反射访问它们,

Test test = new Test()
Field field = test.getClass().getDeclaredField("x");
field.setAccessible(true);

System.out.println(field.getName() + "="+field.get(test ));

但是,你不应该这样做

关于java - 无需获取/设置即可访问私有(private)属性(property),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13669567/

相关文章:

java - 将值插入 mysql Java

java - 如何在JSP中out.print() HTML属性?

android - 无法从 EditText 获取 maxLength! (InputFilter.LengthFilter 没有长度参数,现在怎么办?)

"Beans"的 JavaBeanBooleanPropertyBuilder 没有 setter

c# - 将枚举值与本地化字符串资源链接

java - 封装并将原语传递给方法

java - "W/AudioFlinger( 34): write blocked for 70 msecs, 2236 delayed writes, thread "是什么意思?

javascript - 自定义 CSS 属性,为什么不呢?

.net - 尽管我了解大多数 OOP 概念,但我无法清晰地描绘实现 OOP 概念。为什么?

java - 我可以使用 FileInputStream 而无需在开始时为其指定路径吗