Questions tagged «getter»

getter是一种公共访问器方法,用于面向对象的编程中,它返回与类的私有成员关联的值。

30
为什么要使用getter和setter / accessor?
使用仅获取和设置的getter和setter而不是仅对这些变量使用公共字段的优点是什么? 如果getter和setter所做的不只是简单的get / set,我可以很快地弄清楚这一点,但是我不清楚如何做到这一点: public String foo; 比以下任何方面都更糟糕: private String foo; public void setFoo(String foo) { this.foo = foo; } public String getFoo() { return foo; } 而前者需要更少的样板代码。
1540 java  oop  setter  getter  abstraction 

17
视图的getWidth()和getHeight()返回0
我正在动态创建我的android项目中的所有元素。我正在尝试获取按钮的宽度和高度,以便可以旋转该按钮。我只是想学习如何使用android语言。但是,它返回0。 我做了一些研究,发现除了onCreate()方法以外,还需要其他地方。如果有人可以给我一个例子,那就太好了。 这是我当前的代码: package com.animation; import android.app.Activity; import android.os.Bundle; import android.view.animation.Animation; import android.view.animation.LinearInterpolator; import android.view.animation.RotateAnimation; import android.widget.Button; import android.widget.LinearLayout; public class AnimateScreen extends Activity { //Called when the activity is first created. @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout ll = new LinearLayout(this); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); …

9
为什么JSF多次调用getter
假设我指定了一个outputText组件,如下所示: <h:outputText value="#{ManagedBean.someProperty}"/> 如果在someProperty调用getter for时打印一条日志消息并加载页面,则很容易注意到每个请求多次调用getter(在我的情况中是两次或三次): DEBUG 2010-01-18 23:31:40,104 (ManagedBean.java:13) - Getting some property DEBUG 2010-01-18 23:31:40,104 (ManagedBean.java:13) - Getting some property 如果someProperty计算的值昂贵,则可能存在问题。 我在Google上搜索了一下,发现这是一个已知问题。一种解决方法是包括检查并查看是否已经计算出: private String someProperty; public String getSomeProperty() { if (this.someProperty == null) { this.someProperty = this.calculatePropertyValue(); } return this.someProperty; } 这样做的主要问题是,您获得了大量样板代码,更不用说您可能不需要的私有变量了。 有什么替代方法?没有太多不必要的代码,有没有办法实现这一目标?有没有办法阻止JSF以这种方式运行? 感谢您的输入!
256 performance  jsf  el  getter 


9
好的还是坏的做法?在getter中初始化对象
似乎我有一个奇怪的习惯……至少根据我的同事说。我们一直在一起做一个小项目。我编写类的方式是(简化示例): [Serializable()] public class Foo { public Foo() { } private Bar _bar; public Bar Bar { get { if (_bar == null) _bar = new Bar(); return _bar; } set { _bar = value; } } } 因此,基本上,我只在调用getter且该字段仍为null时才初始化任何字段。我认为这可以通过不初始化任何地方都没有使用过的属性来减少过载。 ETA:之所以这样做,是因为我的班级有几个属性,这些属性返回另一个班级的实例,而后者又具有包含更多班级的属性,依此类推。当并非总是需要所有顶级类时,调用顶级类的构造函数将随后调用所有这些类的所有构造函数。 除了个人喜好之外,还有其他反对这种做法的反对意见吗? 更新:关于这个问题,我已经考虑了许多不同的观点,我将支持我接受的答案。但是,我现在对这个概念有了更好的理解,我能够决定何时使用它,何时不使用它。 缺点: 线程安全问题 当传递的值为null时,不服从“ setter”请求 微观优化 异常处理应在构造函数中进行 需要在类的代码中检查null 优点: …
167 c#  coding-style  getter 


12
傻瓜的吸气器/安装器
我一直在努力使自己了解getter和setter,而不会陷入其中。我已经阅读了JavaScript Getters和Setters和定义Getters和Setters,只是没有得到它。 有人可以明确指出: 吸气器和装夹器的作用是什么,以及 举几个非常简单的例子吗?

4
通过反射调用吸气剂的最佳方法
我需要获取具有特定批注的字段的值,因此通过反射,我能够获取此Field Object。问题是,尽管我事先知道它将始终具有getter方法,但该字段将始终是私有的。我知道我可以使用setAccesible(true)并获取它的值(当没有PermissionManager时),尽管我更喜欢调用它的getter方法。 我知道可以通过查找“ get + fieldName”来查找该方法(尽管例如,我知道布尔字段有时被命名为“ is + fieldName”)。 我想知道是否有更好的方法来调用此getter(许多框架使用getter / setter访问属性,所以它们可能以另一种方式使用)。 谢谢
127 java  reflection  getter 

14
简单的Getter / Setter注释
您使用什么约定来评论获取方法和设置方法?这是我很长时间以来一直想知道的事情: /** * (1a) what do you put here? * @param salary (1b) what do you put here? */ public void setSalary(float salary); /* * (2a) what do you put here? * @return (2b) */ public float getSalary(); 我总是发现我几乎为1a / b和2a / b写了完全相同的东西,例如1a)设置员工的薪水,1b)员工的薪水。似乎太多余了。现在我可以看到对于更复杂的内容,您可以在(a)部分中编写更多内容,以提供具体背景信息,但是对于大多数使用方法的人来说,措辞几乎完全相同。 我只是好奇,对于简单的获取者/设置者而言,仅填写(a)部分还是(b)部分是否可以。 你怎么看?



4
ECMAScript 6类中的getter和setter是什么?
对于ECMAScript 6类中的getter和setter的意义,我感到困惑。什么目的?以下是我要参考的示例: class Employee { constructor(name) { this._name = name; } doWork() { return `${this._name} is working`; } get name() { return this._name.toUpperCase(); } set name(newName){ if(newName){ this._name = newName; } } }

3
.h和.m文件中@interface定义之间的区别
通常我们使用 @interface interface_name : parent_class <delegates> { ...... } @end .h文件和.m文件中的方法,我们综合了.h文件中声明的变量的属性。 但是在某些代码中,此@interface ..... @ end方法也保留在.m文件中。这是什么意思?它们之间有什么区别? 还提供一些有关.m文件中定义的接口文件的getter和setter方法的信息... 提前致谢

6
如何在原型上定义setter / getter
EDIT 2016年10月:请注意,这个问题是在2012年提出的。每个月左右,有人会添加一个新的答案或评论来驳斥该答案,但这样做实际上没有任何意义,因为该问题可能已经过时了(请记住,是Gnome Javascript编写gnome-shell扩展,而不是浏览器的东西,这是相当具体的)。 继我先前关于如何在Javascript中进行子类化的问题之后,我正在制作一个超类的子类,如下所示: function inherits(Child,Parent) { var Tmp = function {}; Tmp.prototype = Parent.prototype; Child.prototype = new Tmp(); Child.prototype.constructor = Child; } /* Define subclass */ function Subclass() { Superclass.apply(this,arguments); /* other initialisation */ } /* Set up inheritance */ inherits(Subclass,Superclass); /* Add other methods */ Subclass.prototype.method1 = function …

10
C ++中访问器方法(获取器和设置器)的约定
在SO上已经问了几个有关C ++中访问器方法的问题,但没有一个能满足我对此问题的好奇心。 我尝试尽可能避免访问器,因为像Stroustrup和其他著名的程序员一样,我认为带有很多此类的类是OO不好的标志。在C ++中,在大多数情况下,我可以为类增加更多责任,或使用friend关键字避免此类情况。但是在某些情况下,您确实需要访问特定的班级成员。 有几种可能性: 1.完全不使用访问器 我们可以仅公开各个成员变量。在Java中这是不行的,但对于C ++社区似乎可以。但是,我有点担心要返回一个对象的显式副本或只读(const)引用,是否夸大了? 2.使用Java风格的get / set方法 我不确定它是否完全来自Java,但是我的意思是: int getAmount(); // Returns the amount void setAmount(int amount); // Sets the amount 3.使用客观的C风格的获取/设置方法 这有点奇怪,但显然越来越普遍: int amount(); // Returns the amount void amount(int amount); // Sets the amount 为了使它起作用,您将不得不为您的成员变量找到一个不同的名称。有些人在下划线后面加上下划线,其他人则在前面加上“ m_”。我也不喜欢 您使用哪种风格,为什么?
78 c++  accessor  setter  getter 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.