Tag: getter setter

Java中的“特殊属性/属性”而不是getter / setter,以避免锅炉板代码

介绍 我正在开发一个开源项目Treez ,我在树视图中组织了所谓的“Atoms”。 这些Atom有时具有很多属性 ,这些属性可以通过树视图中的用户操作或Eclipse代码编辑器中的API进行修改。 我的Atoms本身的属性由可重用的“AttributeAtoms”表示 。 那些包含实际属性值并提供诸如validation之类的附加function(“Atom”的其他可能术语可能是“小部件”,“bean”,“属性”或“树节点”)。 问题(S) 在过去,我为每个Atom属性提供了一个getter / setter对。 这是一项额外的工作,它会增加我的Atom类的大小(参见下面的代码示例)。 现在我正在寻找一种替代解决方案 使创建新Atoms的工作量减少(维护它们的工作量减少)。 避免“冗余”的getter / setter锅炉板代码。 我将在下面介绍几个选项。 你会使用哪个选项? 您有关于如何改进这些选项的建议吗? 你还知道更多的选择吗? Getter / Setter代码示例 private AttributeAtom myAttribute = new FilePathAttributeAtom(“myAttribtue”); public String getMyAttribute() { return myAttribute.getValue(); } public void setMyAttribute(String value) { this.myAtrribute.setValue(value); } 相关文章 java有类似于C#属性的东西吗? (没有)Java中的属性? http://blog.netopyr.com/2011/05/19/creating-javafx-properties/ http://www.eclipse.org/forums/index.php/t/781816/ 为什么要使用getter和setter? 使用getter和setter的私有属性有什么好处? 考虑的选择 A.使用IDE自动生成getter / […]

Java:如何在一个类中创建私有字段Map不可变?

public class Hi { private final Map map; public Map getMap() { return map; } } 我有这个Hi类,我希望map是不可变的。 我还需要一个吸气剂。 目前,另一个类可以从getter修改映射。 我想返回一个地图副本来解决这个问题,但Map是一个接口,所以这意味着我必须进行getter调用: return new HashMap(map); 有没有其他方法可以做到这一点,而不强制地图是一个哈希映射? 我希望它能像以前一样保持同一级别。

JAXB编辑列表getter?

我有XSD文件forms的数据模型,然后使用命令行从xjc生成相应的Java文件。 当我从XSD生成JAXB类时, List类型元素获取为它们生成的getter方法(没有相应的setter方法),如下所示: public List getElement3() { if (element3 == null) { element3 = new ArrayList(); } return this.element3; } 我在从List类型的XSD生成的几乎每个文件中都有很多字段。 使用案例: 现在,我不希望使用null检查生成getter。 我的应用程序代码具有逻辑,其中每个字段的getter经常被调用,这导致它们初始化为空 List 。 然后在编组时我必须停止空列表以传递有效负载,以避免通过线路发送大量空列表。 PS:我有一个用户明确设置Empty List的用例,服务器必须删除后端的某些项目。 因此,区分值是由用户显式设置还是仅因为在访问字段期间调用List的getter而设置。 那么,如何让JAXB生成一个没有null检查的getter? 因为在编译之后编辑生成的java文件会很麻烦,因为它存在于很多文件中,我们有XSD版本需要更新,每次新版本出现时都必须执行编辑。

计算3D中两点之间的距离

我的任务是创建主类,在其中我将任何点的值初始化为(0,0,0)并且能够分别访问和改变所有三个值(x,y,z)。 为此,我使用了getter和setter。 我的下一个任务是在我的主类(我称之为“distanceTo”)中创建一个计算两点之间距离的方法。 如何创建方法“ distanceTo ”,通过获取x,y,z坐标来计算两点之间的距离? 我假设我的答案将与sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2)但我不知道如何在我的方法中写出我的主要课程,如果直到我的第二个测试点课程,我的要点才被定义 到目前为止我只有两点,但我正在寻找一个更一般的答案(所以如果我创建三个点,p1 p2和p3,我可以计算p1和p2之间的距离或p2和p3之间的距离或距离在p1和p3之间。 我的主要课程: package divingrightin; public class Point3d { private double xCoord; private double yCoord; private double zCoord; public Point3d(double x, double y, double z){ xCoord = x; yCoord = y; zCoord = z; } public Point3d(){ this (0,0,0); } public double getxCoord() { return xCoord; } public […]

OO上的JavaWorld:Getters / Setters vs Builder

背景: 我在JavaWorld上发现了这篇文章 ,其中Allen Holub解释了Getters / Setters的替代方法,它保留了隐藏对象实现的原则(他的示例代码也可以在下面找到)。 它解释了类Name / EmployeeId / Money应该有一个构造函数采用单个字符串 – 原因是如果你键入它作为int ,后来需要将它更改为long ,你将不得不修改所有用途这个模式,你没有必要。 问题1: 我想知道:这不是简单地将问题转移到解析被抛出的String参数吗? 例如,如果使用EmployeeId所有代码(从Exporter接收)将String解析为int ,并且突然开始导出long值,则需要修改完全相同的数量…并且如果您开始将其解析为很long它可能必须改为double (即使这对id没有意义)……如果你不能确定将String解析为什么,你就无法实现任何东西 。 问题2: 除了这个问题,我还有另一个问题:我意识到这篇文章已有七年多了,所以有人能指出我最近关于OO设计的一些概述,特别是关于getter / setter和实现隐藏辩论的想法吗? 清单1. Employee:Builder Context public class Employee { private Name name; private EmployeeId id; private Money salary; public interface Exporter { void addName ( String name ); void addID ( String […]

何时在java中使用get / set方法

我想知道何时在我的类中使用get和set方法(getName,setName)以及简单的classVariable.name = “”而不是а = classVariable.getName() 这是使用set和get方法的类的示例 public class ClassExampe { String name; String course; public String getName ( ) { return name; } public void setName (String studentName) { name = studentName; } public String getCourse ( ) { return course; } public void setCourse (String studentCourse) { course = studentCourse; } } 谢谢

具有ArrayList成员变量的不可变对象 – 为什么可以更改此变量?

我有一个包含各种成员变量的类。 有一个构造函数,有getter方法,但没有setter方法。 实际上,这个对象应该是不可变的。 public class Example { private ArrayList list; } 现在我注意到以下内容:当我使用getter-method获取变量列表时,我可以添加新值等等 – 我可以更改ArrayList 。 当我为下一次调用此变量的get() ,返回更改的ArrayList 。 怎么会这样? 我没有再设置它,我只是努力了! 使用String这种行为是不可能的。 那么这里的区别是什么?

在调用getter之后执行业务逻辑

我想在调用getter和setter之后编写我的业务逻辑(两次),因为我在业务逻辑中使用它们的对象值。 然而,在getter之前调用Construct,Post构造,actionevents,.. 那么如果我不想在其中编写业务逻辑,我如何使用getter的值?

Getter和Setters不工作?

我现在有两个class:RemindersDAO.java和ViewLocalReminders.java。 我正在尝试访问ViewLocalReminders.java中的变量,我试图从RemindersDAO.java中调用它。 我是通过使用getter / setter方法组合来做到这一点的。 但是,出于某种原因,我的变量值在getter方法中保持设置为0。 这是代码: ViewLocalReminders.java public class ViewLocalReminders extends SherlockListActivity { private long reminderID; public void onCreate(Bundle SavedInstance) { reminderID = 16; setReminderID(reminderID); } public void setReminderID(long id) { id = reminderID; System.out.println(“Reminder ID Value in Setter: ” + reminderID); } public long getReminderID() { return reminderID; System.out.println(“Reminder ID Value in Getter: […]

Java类中的Scala getter和setter

我想创建一个遵循Scala setters / getters约定的Java类。 我试过跟随简单的类,但它不起作用: public class JavaA { private int a = 0; public int a() { return a; } public void a_$eq(int a) { this.a = a; } } 但是当我尝试从scala访问它时: val x = new JavaA xa = 1 我得到“重新分配给val”错误消息。 我试图寻找这个,但是我发现从scala到java的另一个问题。 这样做的正确方法是什么? 谢谢!