问题标签 [getter-setter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
11 回答
41210 浏览

c++ - 使 getter 和 setter 内联是一种好习惯吗?

Learn C++上,他们说它会运行得更快。所以,我认为在 getter 和 setter 上使用会很棒。但也许,它有一些缺点?

0 投票
5 回答
4859 浏览

oop - getter 和 setter 的用途?

可能的重复:
公共数据成员与 Getters、Setters
类中私有成员的用途

当您可以将变量公开并避免诸如A.setVariableX(A.getVariableY())?

0 投票
1 回答
4270 浏览

actionscript-3 - 覆盖继承的 getter/setter

我有一个继承自 Sprite 的类(Wall)。

Sprite 已经具有宽度和高度属性。但是对于墙,我需要在属性更改时进行一些其他额外的计算(确保新尺寸不会导致它与任何其他墙重叠)。

那么,如何在 Wall 的宽度设置器中设置从 Sprite 类继承的宽度属性?(或者也许有另一种方法可以在设置宽度时进行边界检查?)

0 投票
6 回答
3866 浏览

java - 在 Java 中生成 getter/setter(再次)

我正在考虑写作的方法

然后,自动为该类生成 get_aValue() 和 set_AValue() 方法。

我发现了这些可能性:

1a) 在编译时。使用注解处理器单独处理 MyClass.java,然后编写一个新的 MyClass.java,最后将后者(替换原来的)与 .java 的其余部分一起使用

1b) 在编译时。使用注释处理器生成一个 MyClassGenerated.java 文件,其中包含一个新类(使用 get/set 方法),该类是原始 MyClass 的子类。

2) 在运行时。使用 java.lang.instrument 和外部工具(如 BCEL)在 MyClass.class 中编织新代码。

好吧,问题是:考虑到我尽可能不想使用第三方库(如 lombok 项目或 BCEL)

a)我是否错过了任何其他方法?

b) 你会使用哪种方法?

我想我会使用 1a) 因为

1b) 不干净(程序的其余部分应该使用 MyClassGeneradted 而不是原来的 MyClass,尽管这可能只是名称问题)

2)真的很难(至少对我来说)。

0 投票
5 回答
380 浏览

java - Java 公共变量问题

可能的重复:
属性和封装

新人警报!

我从 Android 和 Java 开始,我开始理解它,但我想知道为什么我应该使用 getter 和 setter 而不仅仅是公共变量?

我看到很多人创建了一个私有变量并创建了一个 get 和 set 方法。

这里的想法是什么?

0 投票
1 回答
3226 浏览

doctrine - Doctrine 覆盖关系字段的 Getter 和 Setter

有谁知道如何为 Relation 字段覆盖 Doctrine_Record getter 和 setter。例如,如果我有一个类NoteNote有很多Users,现在我可以覆盖,例如这个操作Note->Users[] = $user1吗?

谢谢!

0 投票
4 回答
820 浏览

oop - C++ 中的 Getter 和 Setter

我应该在 C++ 中使用 getter 和 setter 还是直接访问类数据更好?

0 投票
1 回答
263 浏览

objective-c - 对所有模型 iVar 使用一个设置器

我有一系列适用于我的应用程序的模型。在所有这些模型中,有(将有)大约 200 或 300 个实例变量。该应用程序将其持久数据存储在基于 Web 的服务器上(MySQL - 但我想这部分无关紧要)。每当更新模型 iVar 时,我都需要调用服务器以更新该 iVar 的适当值。

我当前的模型策略是(头文件):

(实现文件):

问题是,如果我有 200 或 300 个 iVar 都需要对服务器进行相同的更新调用,这意味着要编写很多setter。此外,如果我需要更改方法调用,我必须更新整个应用程序中每个 setter 中的每个方法。

在设置之前,是否有一个过程可以让我首先通过一种方法运行每组 iVar?

我想只有一个NSMutableDictionary每个模型对象来存储所有 iVar,但这抽象了 setter 和 getter,并且可能会为这么多字典引入很大的内存占用。但是,这样做意味着每次设置字典时,我都可以通过一种方法传递它。

据我了解,在运行时将 iVar 动态添加到对象模型被认为是一件坏事,因为指针引用了可能依赖于模型的任何子类(子类指针不会偏移,除非完成完全重新编译)。

任何想法和建议都非常感谢。

更新

根据 Ole 的建议,这里是解决方案(尽管不幸的是,它使用的代码比几行多一点)......

在模型中,我添加了一个可以在需要时设置的方法。我没有直接从 init 调用该方法,因为添加从服务器返回的一大堆结果会触发每个添加对象的观察者。所以我在初始化并更新了来自服务器的第一个抓取之后调用该方法。

这是代码...

然后我将观察者添加到模型中:

在我的实际实现中,我还碰巧发布了一个对象集的通知,self以便我可以更新任何应该听但没有注意的东西(比如 中的东西NSArrayControllers)。

0 投票
1 回答
912 浏览

objective-c - 当 KVO 从模型设置器触发时,防止递归地重新输入 observeValueForKeypath

我有一大堆模型可以观察自己的变化。当触发 setter 时,模型中的观察者会被调用,并且在该模型中,我调用 Web 服务器并更新 Web 服务器中的信息,以便它正确地拥有应有的数据。

但是,在我对 Web 服务器的调用中,我可以从连接断开、服务器重置等到服务器说不允许更新(例如,另一个用户更改的某些其他参数阻止了更新)。

哦,断开数据存储的乐趣……

有什么方法可以self在不重新触发 KVO 操作的情况下更新(即模型)?

当我得到响应时,我可以关闭观察者,但是在执行后台服务器请求时,可以对同一对象进行另一个用户操作。这将中断另一个呼叫。

请参阅此处的帖子,了解我为首先进行观察而尝试做的事情以及完整模型的代码示例。

我正在拨打电话的部分将在观察者中,如下所示:

你们似乎总是能得到一些很好的建议,我总是很感激你们提出的任何建议。

0 投票
1 回答
563 浏览

actionscript-3 - AS3 获取/设置与重新分配值

当您可以重新分配值时,获取/设置值的目的是什么?仅仅是因为您可以获取/设置私有变量吗?