Tag: setter

Java – 来自构造函数的setter

package cen.col.course.demo; import java.io.Serializable; public class Course implements Serializable { private static final long serialVersionUID = 1L; protected String code; protected String title; protected Professor professor; public Course( String code) throws InvalidDataException { super(); setCode(code); } public Course(String code, String title ) throws InvalidDataException { this(code); setTitle(title); } public Course(String code, String title, Professor professor) […]

从java中的另一个线程访问线程的变量

我试图在java中的另一个线程中访问和修改线程的变量,我真的不知道如何做到这一点。 例如: Runnable r1 = new Runnable() { int value = 10; public void run() { // random stuff } } Runnable r2 = new Runnable() { public void run() { // of course the bellow line will not work r1.value–; // I want here to be able to decrement the variable “value” of r1 […]

setter的Lambda表达式

我们可以使用lambda表达式获取getter,如下所示 Function studentNameGetter = Student::getName; 如何为setter创建lambda表达式?

如何从存储在arraylist中的对象中提取字段?

我可以获得一些可以分开的工作代码示例并研究它们的工作原理吗? 具体来说,我需要弄清楚如何从列表中的x编号对象获取地址字段? 如何从列表中删除第x个对象? 如何将对象x的价格字段设置为新值? 我理解houseList.add如何将数据放入附加到列表末尾的新对象,但我不理解它的反面以及如何定位特定对象并对其进行操作。 请展示一个有效的多类示例。 谢谢! 创建House对象的类,它包含以下信息; public House(int address, String street, double price, int rooms) { this.address = address; this.street = street; this.price = price; this.rooms = rooms; } 它有以下方法…… public void SetAddress (int address){ setAddress(address); } private void setAddress (int address){ this.address = address; } public int GetAddress (int address){ address = […]

Java – 应该通过getter和setter方法在构造函数中访问私有实例变量吗?

我知道私有实例变量是通过他们的公共getter和setter方法访问的。 但是当我在IDE的帮助下生成构造函数时,它直接初始化实例变量,而不是通过setter方法初始化它们。 Q1。 因此,我应该为构造函数更改IDE生成的代码,以通过其setter方法初始化这些实例变量。 Q2。 如果是,那么IDE为什么不以这种方式生成构造函数代码? ============================= EDITED ==================== =================== 我使用Eclipse和Netbeans IDE 这是一个普遍的问题。 但正如@Lords所要求的那样,答案取决于我们的构造函数是公共的还是受保护的,还是私有的还是私有的?

如何避免具有许多实例变量的类中的getter / setter

我会尽量保持简短。 我有许多实例变量(30+)的类,因此有很多getter / setter。 这些类本身很简单,但是由于getter / setter,LOC刚刚爆炸(并且还有太多的代码欺骗性)。 所以我删除了属性并将它们存储在地图中,就像这样 public class MyTechnicalToolClassX { //…constructor private Map data; public Object getAttributeByKey(AttributeKey key) { // …doStuff, check data associated with key, etc // if (predicate == true) return otherData; return data.get(key.toString()); } public void setAttributeByKey(AttributeKey key, Object value) throws IllegalArgumentException { if(key.getType().isInstance(value)) { data.put(key.toString(), value); } else { […]

如何在我的ModelInput类中使用Joshua Bloch的版本描述的Builder模式?

我正在尝试使用Builder Pattern为我的下面的类。最初我使用我的类的构造函数来设置所有参数但不小心我遇到了Builder模式,它看起来很适合我的用例。 下面是我的类,其中人们将主要传递userId , clientId和parameterMap但其他字段是可选的,它们可能会也可能不会传递它。 而且如果他们没有传递任何超时值,我需要将默认超时值设置为500,但如果他们传递任何超时值,那么它应该覆盖我的默认超时值。 这里Preference是一个有四个字段的ENUM。 public final class ModelInput { private long userid; private long clientid; private long timeout = 500L; private Preference pref; private boolean debug; private Map parameterMap; public ModelInput(long userid, long clientid, Preference pref, Map parameterMap, long timeout, boolean debug) { this.userid = userid; this.clientid = clientid; this.pref = pref; […]

Java中的getter / setter

我是Java新手,但对ActionScript 3有一些OOP经验,所以我试图依靠我所知道的东西进行迁移。 在ActionScript 3中,您可以使用get和set关键字创建getter和setter,这意味着您在类中创建方法并通过该类的实例的属性访问数据。 我可能听起来很复杂,但事实并非如此。 这是一个例子: class Dummy{ private var _name:String; public function Dummy(name:String=null){ this._name = name; } //getter public function get name():String{ return _name; } //setter public function set name(value:String):void{ //do some validation if necessary _name = value; } } 我会在对象中访问name : var dummy:Dummy = new Dummy(“fred”); trace(dummy.name);//prints: fred dummy.name = “lolo”;//setter trace(dummy.name);//getter 我怎么用Java做到这一点? […]

Java:Setter Getter和构造函数

我对使用getter / setter和构造函数感到有点困惑(参见下面的代码示例) public class ExampleClass { private int value = 0; public ExampleClass () { value = 0; } public ExampleClass (int i) { this.value = i; } public int getValue() { return value; } public void setValue(int val) { this.value = val; } public static void main(String[] args) { ExampleClass example = new […]

具有所有类属性的构造函数或带有setter的默认构造函数?

以下是两种方法: 具有所有类属性的构造函数 优点:我必须输入一定数量的参数类型,所以如果我发出错误,编译器会警告我(顺便说一下,有没有办法防止错误地在参数列表上切换两个Integer的问题?) 缺点:如果我有很多属性,实例化行可能变得非常长,并且可能跨越两行或更多行 setter和默认的空构造函数 优点:我可以清楚地看到我正在设置的内容,所以如果我做错了什么我可以在输入时立即查明它(我无法在切换两个相同类型的变量时出现先前错误) 缺点:具有大量属性的对象的实例化可能需要几行(不知道这是否真的是一个con),如果我忘记设置属性,编译器就不会说任何内容。 你会做什么以及为什么? 你知道任何光模式(考虑到应该在每次实例化7个以上的属性时使用它)吗? 我问这个是因为我倾向于不喜欢大型构造函数,我无法快速找出我正在寻找的变量的位置,另一方面我发现“set all properties”容易遗漏一些属性。 请随意在优点和缺点中论证我的假设,因为它们只是我的想法:) 更新 – 我发现的一个与此相关的问题: 构建大的,不可变的对象,而不使用具有长参数列表的构造函数