首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java计算属性

Java计算属性
EN

Stack Overflow用户
提问于 2018-05-14 17:29:38
回答 1查看 3.2K关注 0票数 1

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

示例:

代码语言:javascript
复制
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中,我可以这样做smth:

代码语言:javascript
复制
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)
    }
}
}
EN

回答 1

Stack Overflow用户

发布于 2018-05-14 17:40:28

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

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

Java社区中有一种趋势,即过度使用getter和setter,自动为私有字段提供这两种方法( Java Beans中的情况)。不过,建议您首先不要为不应该从外部直接访问的数据定义getter/setter方法,其次,尽可能使用终结值,因此不要为它们定义setter方法,第三,对唯一目的是传输数据的DTO使用公共字段(参见Bob叔叔的"Clean Code“)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50327099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档