Java计算属性

时间:2018-05-14 09:29:38

标签: java

我使用Jacob库来操作我的Win32应用程序。 我得到了一些java SomeClass,它是win32 SomeClass的一个实现。

示例:

public class SomeClass{
    public String someProperty;

    public String getProperty(String propertyName){
         return SomeStaticSystemClass.getProperty(propertyName);
    }

    public String setProperty(String propertyName, String value){
         return SomeStaticSystemClass.getProperty(propertyName, value);
    }

}

当我获取或设置“someProperty”字段时,我如何调用getProperty或setProperty方法?

在Swift例如,我可以这样做:

struct Rect {
var origin = Point()
var size = Size()
var center: Point {
    get {
        let centerX = origin.x + (size.width / 2)
        let centerY = origin.y + (size.height / 2)
        return Point(x: centerX, y: centerY)
    }
    set(newCenter) {
        origin.x = newCenter.x - (size.width / 2)
        origin.y = newCenter.y - (size.height / 2)
    }
}
}

1 个答案:

答案 0 :(得分:0)

不幸的是,Java中没有“属性”的概念,即通过为字段赋值或从中读取值来触发setter或getter调用是不可能的。

一般模式是调用getter和setter方法,而不是将字段值保持为私有,因此只能将其作为类中的值进行访问。

Java社区中有一种趋势是过度使用getter和setter自动为私有字段提供(Java Bean中的情况)。建议首先,不要为不能从外部直接访问的数据定义getter / setter方法,其次,尽可能使用最终值,因此不为它们定义setter,第三,使用单独的DTO的公共字段目的是传输数据(参见Uncle Bob的“清洁代码”)。