4

是否有使用useXxx()vs.为 Java 方法名称添加前缀的一般准则setXxx()

我试图调用setDelimiter()Scanner 类的方法,却发现它被命名为useDelimiter(). JavaDoc 将此方法描述为“设置此扫描仪的分隔模式...”

那么,为什么useXxx()而不是setXxx()?

4

5 回答 5

2

命名方法.setXxx().getXxx()只是JavaBeans的约定。如果您没有明确地将您的类用作 bean(Scanner当然不是),您可以随意命名您的方法。

此外,此.useDelimiter()方法返回this,而 JavaBeans 设置器返回void。如果此方法确实遵循 bean 约定,您将无法编写:

Scanner scanner = new Scanner(System.in).useDelimiter(xxx);

方法名称的唯一真正约定,除非您确实打算将您的类作为 bean,否则它们应该是自我解释的。

于 2013-01-10T17:44:55.893 回答
2

这不是标准的二传手方法。它设置 delimPattern 并返回 Scanner 对象

 public Scanner useDelimiter(Pattern pattern) {
    delimPattern = pattern;
    return this;
}
于 2013-01-10T17:46:53.133 回答
0

这绝对是不一致的。

我通常希望访问器的形式为setX/ getX(或isX布尔值)。这是JavaBeans 约定的一部分。许多框架和工具都被明确编码为以这种方式工作,如果忽略它,您将失去互操作性。

但是请注意,这不是不正确的。但无论如何,我都会尝试保持一定程度的互操作性。

于 2013-01-10T17:45:03.913 回答
0

“setXXX()”和“getXXX()”不仅仅是“约定”——它们的名称也被 Java Beans 识别为“getter”和“setter”方法。如果你的类恰好是一个 Java Bean。“扫描仪”类不是:)

否则,这只是一个问题偏好。

于 2013-01-10T17:45:58.390 回答
0

在 Java setXxx() 方法中,'set' 用于设置一个值,例如设置一个经理的 ID:

 public void setManagerID()
 {
      String managerID = null;

    managerID = JOptionPane.showInputDialog(null,"Input an ID:");

  }
于 2013-01-10T17:54:30.210 回答