【问题标题】:Calling getter methods before setter在 setter 之前调用 getter 方法
【发布时间】:2014-04-17 13:42:37
【问题描述】:

在任何 Java 程序中,一般来说,我几乎总是有 getter 和 setter 方法。在调用 getter 方法之前调用 setter 方法是通常要遵循的规则。但是,理论上,可以在不调用 setter 方法的情况下调用 getter 方法。我很好奇的是,当我在调用setter方法之前错误地调用getter方法时,是否有任何OO设计可能会在编译时抱怨。

【问题讨论】:

  • 我不知道,除非您在 getter 检索到的对象为 null 时显式抛出异常。
  • “在调用 getter 方法之前调用 setter 方法是通常遵循的规则”:为什么?
  • 也许您的 getter 可以返回标准的未初始化值,正确记录在您的 Javadoc 中,例如 null ?
  • 还没有。您始终可以使用构造函数将对象初始化为其默认值,然后在必要时使用 setter 更改值。还有Exceptions在这里派上用场。
  • 如果在您的情况下您想保护这一点,那么您可以在声明时分配一些默认值或为此使用构造函数。

标签: java getter-setter


【解决方案1】:

是的,您需要在 getter 中检查 null 并在发现 null 时抛出异常。 因此在运行时如果你调用一个getter而不设置它的值,它会抛出一个异常。

祝你好运

【讨论】:

    【解决方案2】:

    只需在 try catch 块中调用您的 getter 方法,这样即使您的 getter 值为 null,执行流程也不会停止。

    【讨论】:

    • getter 方法返回 null 绝对没有问题。问题只是尝试调用指向 null 的对象上的方法。
    【解决方案3】:

    请看这个例子

     public class Example{
    
     private String description;
     //Setters and getters
     }
    
    
     public static void main(String[] args){
        Example example=new Example();
        if(example.getDescription().length()<=0){    //NullPointerException here
            example.setDescription("Please write some description");
        }
     }
    

    所以对于对象,如果在 setter 之前调用 getter,则需要检查 null。为避免这种情况,请使用构造函数初始化变量。

    【讨论】:

      【解决方案4】:

      你当然可以在setter之前调用getter,但是如果没有为变量设置值,它会返回一个空集。你可以尝试异常处理

      【讨论】:

        猜你喜欢
        • 2019-02-27
        • 1970-01-01
        • 1970-01-01
        • 2011-04-14
        • 2017-09-09
        • 1970-01-01
        • 1970-01-01
        • 2017-08-26
        • 1970-01-01
        相关资源
        最近更新 更多