当前位置: 首页 > 知识库问答 >
问题:

Java中不使用getter直接获取变量值可以吗?

喻选
2023-03-14

我正在编写在坐标系上运行的程序,所以我需要经常使用坐标。我决定使用Point类,因为它显然允许轻松存储点的坐标。

问题是在我的程序中的任何地方,我都将其存储为int,而Point在使用getX()getY()方法时返回双倍。当然,我可以轻松地将其强制转换为int,但它看起来不是很优雅,并且会给代码添加不必要的混乱。

如果我直接得到值,可以吗?这样地:

Point p = new Point(0, 0);
int x = p.x;

而不是:

int x = p.getX();

我甚至不确定它是否有任何区别,我只知道getter和setter存在是有原因的,应该使用。

共有3个答案

戚令秋
2023-03-14

您已链接有关 Point 的文档。因此,请仔细阅读并思考您的问题,而不是开始编码和思考,首先想到一个想法。然后了解java.awt.point类最适合您的情况。

如果它不适合你的情况,你可以实现一个类。否则,遵循留档。遵循留档和OOP概念是一个很好的实践。

Point p = new Point(0, 0);

如果你已经按照留档,你会看到这样:

< code>Point():在坐标空间的原点(0,0)构造并初始化一个点。

我想你对此还不清楚。然而,

Point p = new Point();
int x = p.x;

这不是问题,因为x公共的,它是您的程序。但他们为什么要实施这一点:

getX();

还要阅读这些点类的实现-getter和setter。

桓智敏
2023-03-14

@Sarjan是的...有些人可能会认为setter和getter是邪恶的。但我想它在各种情况下都很有帮助,尤其是在大型项目中。一个示例是验证。比如说,如果您只想在x大于0时设置x,那么如果它是公开的,您就无法优雅地执行它(除非您在设置变量之前进行检查...无处不在!!!...乏味的对吧??如果某个新程序员在您的项目上工作并且不知道这一点,那么错过它有一天会使您的系统崩溃)...如果您使用setter,您可以检查它本身是否大于0,从而提供轻松的实现!!

PS:我不能评论这个,因为它太长了,所以是作为答案写的。

危飞跃
2023-03-14

我正在编写一个在坐标系统上运行的程序,所以我需要经常使用坐标。我决定使用Point类,因为它显然允许轻松地存储点的坐标。

问题在于在我的程序中,我将其存储为int,而Point在使用getX()和getY()方法时返回双倍。

您确定它显然可以轻松地存储域的点的坐标吗?我不
这么认为。
如果您需要操作一些 java.awt.Point 实例,则使用 java.awt.Point 类是有意义的。

这门课似乎不适合你的需要。

    < li >如果您确实不需要使用< code > Java . awt . point :

您应该创建并使用自己的Point类,该类在编写时返回int值:

int x = p.getX();
  • 如果您改变主意,并且碰巧需要使用java.awt.Point来完成某些任务:

在自定义 Point 类中,添加一个方法以返回 java.awt.Point 实例。

 类似资料:
  • 问题内容: 场景是我需要至少两次访问一个值。即我正在使用记录器来跟踪应用程序中正在发生的事情。我想记录该函数正在运行的对象的名称,然后再执行具有相同名称的操作(即检查它是否包含一些字符串或将其放入数组中)。 将名称存储在变量中: 或两次调用getName(): 我了解,在第一种情况下,我将创建一个新的String,为其分配一个值,然后两次检索该值。这样,我正在使用更多的内存资源,对吗? 在第二种情

  • 问题内容: 已在Windows机器(Windows 7)中设置了环境变量,并尝试从以下Java代码获取变量的值。但是,它返回一个空值。 现在,如果我执行以下代码,它将引发安全异常,这意味着用户没有该变量。 后来,我在JRE安全策略文件中添加了权限,并添加了以下条目,但仍返回空值。 问题答案: 此代码段不应返回null以便解决您的问题。

  • 问题内容: 我可以在Java中使用Scala List,例如: 它似乎没有编译。找不到List $ .apply方法。 当我将其更改为 其中Dir是我的scala类,而ls()返回一个scala列表,编译器抱怨 “内部编译器错误:java.lang.ClassCastException:org.eclipse.jdt.internal.compiler.lookup.BaseTypeBinding

  • 我想获取所选框的值,并将其保存在PHP变量中。我想保存并回显变量。请帮忙

  • 因为有一些数据配置直接放到php中更方便,但是json好像只能通过$a='{"id":1}';然后再用json_decode($a)做遍历等处理?就不能像js,python等直接var a={"id":1}?

  • 问题内容: 我需要知道局部变量的类型。我正在使用Java反射,但无法使用它。您能否让我知道如何知道局部变量的类型/名称。 我可以使用Java反射获取有关局部变量的信息吗? 问题答案: 假设你在谈论方法或构造函数的局部变量,则无法使用反射来了解它们。你要么 使用字节码库,例如BCEL或ASM,或 使用远程调试器API之一。 后者将允许你访问局部变量的值,但仅当JVM被调试代理挂起时才可以。 这两种方