当前位置: 首页 > 面试题库 >

Java约定:在类中使用getter / setter?

谷梁弘深
2023-03-14
问题内容

我的教授真正强调要通过始终使用访问器和更改器来访问私有实例变量来防止隐私泄漏。但是,我必须在班级中使用班级的getter / setter方法吗?

因此,例如,如果我有以下课程:

public class Person 
{
    private String name;
    private int age;
}

我想为此编写一个toString()方法。我可以写:

public String toString()
{
    return name + " " + age;
}

还是我需要做这样的事情:

public String toString()
{
    return this.getName() + " " + this.getAge();
}

问题答案:

您可以任一个。但是,您的教授可能会喜欢使用方法而不是直接访问。这就是为什么。

假设您有一个这样的课程:

class SomeClass {
    private int someValue;
    private String someString;

    public SomeClass(int someValue, String someString) {
        this.someValue = someValue;
        this.someString = someString;
    }

    public int someValue() {
        return this.someValue;
    }

    public String someString() {
        return this.someString;
    }

    public String toString() {
        return someValue + ": " + someString;
    }

}

很简单,对吧?好吧,如果突然之间我们想更改我们的计算方式的实现someValue并将其基于someString

public int someValue() {
    int value = 0;
    for(int i = 0; i < someString.length; i++) {
         if(someString.charAt(i) == ' ') value++;
    }
    return value;
}

现在,您还必须更改someValue使用变量的每个位置。

因此,如果您想使代码从长远来看更易于维护,请使用方法调用。这样,当您对代码进行更改时(并且相信我,它始终在更改),您只需在一个位置而不是两个位置进行更改。

是的,您可能想在获取中使用方法调用,someString而不是在最后一个方法中直接访问:-)



 类似资料:
  • 问题内容: 如果我有以下私人成员: 我应该如何命名我的吸气剂/设置剂: 要么 编辑:或 ? 问题答案: 正确答案是 如果希望根据 8.8 节 : 将JavaBeans API规范 的推断名称大写 (例如,通过JSP中的$ {object.xIndex}访问它们),将它们用作属性。

  • 问题内容: 案例A 不遵循Getter&Setter约定 human / human.go main / main.go 案例B 遵循getter和setter约定 main / main.go 以下约定的问题是,在提供其字段名称时无法实例化该结构。我想使用约定,但是我只能使用私有访问。 问题答案: 实例化结构(或对象,采用面向对象的语言)时,无论如何都不应指定私有字段的值。但是,提供可能以私有字

  • 问题内容: java中类的命名约定是什么,例如,所有类都应像MYCLASS.java这样大写吗? 像 **com.sun.org.apache.bcel.internal.generic 这样的类 。 简报** 。也可以在Sun的图书馆中找到 注意:我已经阅读了Oracle的所有命名约定,但是找不到任何内容说明我们应该使用AllLargecase命名一个类。 问题答案: 浏览了许多链接后,我发现没

  • 我希望创建一个Kotlin包装器围绕一些糟糕的设计决策的Java库。我面临的一个问题是,库中的POJO没有一个遵循getter和setter的正常Java Bean约定。 Kotlin可以推断遵循普通getter/setter约定的Java对象的属性: 有哪些可供选择的方案?

  • 我是第一次尝试我的手在Firebase,我遇到了一个问题。只有在getter方法符合变量名或者成员变量是公共的情况下,才能从Firebase存储/数据库中获取数据。但是我对成员变量的命名约定是,并且我在getter方法名称中没有使用“m”。现在我有多个问题: 公开模型成员变量是可行的选择还是错误的做法?这里最好的命名方法是什么?我应该将getter方法命名为,还是应该将“m”排除在成员变量名之外?

  • 问题内容: 用Java编写实用程序类时,应遵循哪些良好准则? 包装应该是“ util”还是“ utils”?是ClassUtil还是ClassUtils?什么时候上课是“帮手”或“实用程序”?实用程序还是实用程序?还是混合使用它们? 标准Java库同时使用Utils和Utilities: javax.swing.Utilities javax.print.attribute.AttributeSe