java - 没有字段的类是否有特殊名称?

标签 java class

没有字段的类叫什么?我是 Java 编程的初学者,我正在尝试理解和学习类,所以我有以下类“DalUser”,它没有字段,只有方法,例如名为 Dal 的文件夹中的 validateSession:

import com.app.Be.BeUser;

public class DalUser{    
  public BeUser validateSession(String user, String password)

   {

    ...

   }

我有一个 BeUser 类,它有用户和密码字段,位于另一个名为 Be 的文件夹或包中。这是一个特殊类型的类还是一个普通类,尽管没有任何字段?

最佳答案

What is a class without fields called?

这个1没有普遍适用的名称:

  • 没有字段的类没有明确的状态,但严格来说,每个 Java 对象都有与其互斥量相关联的状态。因此称它们为“无状态类”有点牵强。

  • 没有字段的类可能是“辅助类”,但没有字段既不是必要条件也不是充分条件。

  • 没有状态的实例也是不可变的,因此您可以将没有字段的类称为“不可变类”……尽管锁定用例也适用于此。

辅助类和无状态类的另一个区别是该类是否被设计为实例化。帮助程序类(在正常使用中)由 static 方法组成,并且未实例化。 (实例没有用处)。无状态类通常被设计为实例化,并传递给其他类,这些类实际上将对该实例进行方法调用;例如作为“政策对象”。

还有一个“基类”用例的子案例,其中基类中没有字段。 (在那种情况下,称该类为“无状态”是一种误导,因为子类中通常有状态。)

简而言之,您需要检查类及其实际使用方式,以确定最适合它的标签。


在您的具体示例中,最好将代码描述为无状态类。这是因为它设计可以在不同的上下文中实例化和传递,但功能不依赖于对象本身的任何状态。


这里有一些其他的例子来说明为什么没有简单的答案。

1) 这是一个辅助类,但它有一个(静态)字段。

 public class Plumbing {
     private static nosTapsFixed;
     private Plumbing() { }
     public class fixTap(Tap t) {
         // fix 't'
     }
 }

2) 这是一个基类。它没有字段,但显然不打算用作辅助类。

 public abstract class Tradesman {
     // no fields
     public abstract Invoice issueInvoice();
 }

3) 这是一个没有字段的类 (java.lang.Object) 的使用,显然不是“助手”。

 final Object myLock = new Object();
 ...
 synchronized (myLock) {
     ...
 }

4) 这是另一个没有字段但不是助手的类的示例。

 public enum Agreement {
     YES, NO
 }

1 - 但如果您真的想要一个名字,“villein class”怎么样? Villeins 没有任何田地....

关于java - 没有字段的类是否有特殊名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30947789/

相关文章:

c++ - 类解构器和指针

java - BeanUtils.copyproperties 日期属性复制问题?

C++ 需要使类成员变量能够访问另一个类实例的 std::vector

java - 错误找不到简单投资类别的符号

java - 如何使用 Gradle 并行运行 Cucumber jvm 测试场景?

php - 如何循环访问类的静态数据成员——使用变量作为类名?

nhibernate - 在带有导入类的 hbm 中使用命名查询

java - 将列表转换为 JSON

java - 在Java中显示char的ArrayList

java - 无法获取 Android map API 的 keystore